using Jar file in java code - java

I am coding in simple text document and executing java code with command line with javac command. i want to use jar file which is in directory like /abc/public/assi1 and i have code which is in directory like /abc/assi1. I am including the jar file with import statement in the class myClass.java which is in directory /abc/assi1/myClass.java i am getting errors.
It is not recognizing the things which are in the jar file.
Could some one please help in this.
Thanks

You can compile your code like this from the directory /abc/assi1:
javac -cp .:/abc/public/assi1/your.jar -d . your-java-class.java
Then you can run your code like this from the directory /abc/assi1:
java -cp .:/abc/public/assi1/your.jar your-java-class
-cp option sets the class path for you on command line. It adds the required jar file and the current directory . into your class path.

The jar has to be inside your java path.
You have to write something like this.
javac -classpath \path\to\lib.jar src.java

Related

Compiling Java file with Jar dependencies using command prompt in windows

I have a java file with jar dependencies an I would like to compile them using command in command prompt from windows PC.
I have placed all 3 jar files and java file in same folder of D drive.
Do i need to set class path in environmental variables?
my jar file names are juh-4.1.2.jar, ridl-4.1.3.jar and unoil-4.1.2.jar?
Any help will be greatly appreciated. Thanks in advance
You should only need to javac the input files and pass the -cp flag
Command should look something like
C:\Path\To\JDK\javac.exe -cp "D:\pathtojar1.jar; D: [... ]" *.java
EDIT: Use CP Flag, didn't see you had external .jar dependencies

How to run an extracted jar?

If I extract a Jar file into a directory, what's the correct java command to run it as if it was the jar?
Meaning, what would be the equivalent command to java -jar myProgram.jar except not using the jar itself?
I've tried stuff like java -cp ".;META-INF\lib\*" JarMain but it seems like there's still something missing there.
Do you mean that add a jar to classpath but do not run it? If so, java -cp myProgram.jar;ohterjar/libdir JarMain. If you use linux/mac,replace ; to :.
If you run jar file directly (without extracting), you can use command: java -jar jarfilename. jar
If you extract jar file into separated files, you can run .class file only. Use the command java classfilename.
You need to set path environment to java/bin directory before running above commands, or just change directory to it.

Cannot run this program from cmd with classpath option

this is a beginner question. I am having a problem running my java program from command line. I am using Windows10.
The problem is the following. I have a folder named "folder1", which is located o the dekstop of my computer. So the full path would be
C:\Users\Ioanna\Desktop\folder1
Inside that folder I have created a second folder which I named folder2. so the path to this would be
C:\Users\Ioanna\Desktop\folder1\folder2
Inside folder2 I have a java file named example.java
I want to compile it and run this file with setting the -classpath option through cmd. I dont want to set the path or to add the folder to tha path from environment variables.
I am trying
C:\Users\Ioanna\javac -cp C:\Users\Ioanna\Desktop\folder1\folder2 example.java
but it says file not found.
I tried several other alternatives, but I can't seem to find how to compile successfully the program.
Code compilation (to bytecode) and code execution are two separate steps, in Java.
First, compile your .java to obtain the corresponding .class file (I'm assuming your folder paths are right):
C:\Users\Ioanna\javac C:\Users\Ioanna\Desktop\folder1\folder2\example.java
This will give you example.class in that same folder.
Next, run that class (provided it has a main() method):
C:\Users\Ioanna\java -cp C:\Users\Ioanna\Desktop\folder1\folder2 example
java expects the path of the file(s) to compile. And example.java is not in the current folder (C:\Users\Ioanna).
Use
javac Desktop\folder1\folder2\example.java

How to add external library in classpath?

I have a folder that contains these java files: Main, TableManager, CustomFileWriter, CustomFileReader plus the external library commons-lang3-3.0.jar.I'm trying to compile the Main.java with this command
javac -cp commons-lang3-3.0.jar Main.java
but it says cannot find symbol
TableManager table = new TableManager()
I create an instance of TableManager in Main class. Without the external library and compiling with just javac Main.java works fine. How can I fix this. I need the external library for the StringUtils. I'm not using frameworks. Just text editor and running to terminal.
To compile a Java file and include a Jar file, enter the following command line:
javac -cp jar-file Main.java
For multiple JAR files, separate the jar-files with semicolons ;, with the following command line:
javac -cp jar-file1;jar-file2;jar-file3 Main.java
You need the path, not just the jar name, like
javac -cp c:\home\ann\public_html\classes\compute.jar
engine\ComputeEngine.java
You can check it in the documentation.
To compile a class (on windows) with a jar in the same direcory use:
javac -cp .;myjar.jar MyClass.java
To then run the class you can use:
java -cp .;myjar.jar MyClass
NOTE: on linux you will need to replace ; with :
The "-cp" Option overwrites your classpath. So in order to successfully compile and run your java-app, you have to add the path of your Main.class file and the external library as arguments. Here the "." is the relative path to your Main.class file and commons-lang3-3.0.jar the relative path to the external library. Under Windows it is sometimes necessarry to use quotes.
To compile:
javac -cp ".;commons-lang3-3.0.jar" Main.java
To run:
java -cp ".;commons-lang3-3.0.jar" Main

How to include jar files with java file and compile in command prompt

I have 3 jar files and a .java file that depends on these jar files. How do I compile the .java file with these jar files using a command prompt?
You can include your jar files in the "javac" command using the "-cp" option.
javac -cp ".:/home/path/mail.jar:/home/path/servlet.jar;" MyJavaFile.java
Instead of "-cp" you could also use "-classpath"
javac -classpath ".:/home/path/mail.jar:/home/path/servlet.jar:" MyJavaFile.java
You could including the jars every time you compile by setting the environment variable "CLASSPATH" correctly. The environment variable will store the path where the jars and classes that needs to be used for compiling/executing any java file. You will not have to include the jars individually every time you compile you file.
Different machines have different methods to set the classpath as an environment variable.
The commands for Windows, Linux, etc are different.
You can find more details in this blog.
http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html
Please try on Linux
javac -cp jarfile source file
EXAMPLE :-
javac -cp .:/jars/* com/template/*.java
Syntax will work on windows dos command:
javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java
The followings are steps,
Copy all jars and your .java file in a same folder (It will be easy to mention file names instead of mentioning long path. Though you can keep jar and .java in separate folders).
To compile,
javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
To execute,
java -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>
I hope this helps!
Try to add all dependency jar files to your class path through environment variable settings or use the below steps:
Open command prompt.
Change directory to the location of you java
file that you would like compile.
Set the classpath for your dependency jar files as shown below:
set classpath=C:\Users\sarath_sivan\Desktop\jars\servlet-api.jar; C:\Users\sarath_sivan\Desktop\jars\spring-jdbc-3.0.2.RELEASE; C:\Users\sarath_sivan\Desktop\jars\spring-aop-3.0.2.RELEASE;
Now, you may compile your java file. (command: javac YourJavaFile.java)
Hope this will resolve your dependency issue.
This will create .class file:
javac -classpath "[jarname with specified path]" [java filename]
This will execute class file:
java -cp [jarname with specified path]: [java filename]
Try This.
javac -cp .:jars/jar1:jars/jar2:jars/jar3 com/source/*.java
javac -cp jars/jar1:jars/jar2:jars/jar3 abc.java
With -cp command we specify the path where to find the additional libraries which are required to compile the class. jar1, jar2 and jar3, available in jars folder are used to compile abc.java class.
You need to specify the dependencies in compile time as well as runtime
To compile use this format
javac -cp "*.jar;classfile_path" filename.java
Example:
javac -cp "ojdbc6.jar;c:\programs" Main.java
some times making following change works:
java -cp ".;%CLASSPATH%" classfilename
Note: ON Windows. For linux use $CLASSPATH instead.
If you are using Ubuntu:
/opt/JavaServices/sqlite $ export CLASSPATH=/opt/JarFiles/XXXX.jar:/opt/JarFiles/XXXX.jar:/opt/JavaServices/;javac SQLiteSample.java
Go to folder location (Out of package structure)
/opt/JavaServices $ export CLASSPATH=/opt/JarFiles/XXXXX.jar:/opt/JarFiles/XXXXX.jar:/opt/JavaServices/;java sqlite.SQLiteSample
Note: Please see the file locations and package names
Plenty of these answers helped me, but none that were exactly what I needed.
Assumptions:
Windows OS
JAR file and java file are in same directory
javac -cp <jar filename>.jar <filename>.java
java -cp <jar filename>.jar; <filename>
Keep in mind the syntax needs to exactly match. Cannot exclude file extensions or the semi colon.

Categories