I have my java source files in src/net/... folders and .jar files in lib folder. How to compile and run this files with command line without writing build script ?
-
2you will find this link useful thejavageek.com/2013/07/21/…Prasad Kharkar– Prasad Kharkar2013-09-11 12:02:06 +00:00Commented Sep 11, 2013 at 12:02
-
Don't forget to include what you have tried or where you are having problems. Otherwise your question may be closed.Viktor Seifert– Viktor Seifert2013-09-11 13:41:30 +00:00Commented Sep 11, 2013 at 13:41
-
Also please have a look at stackoverflow.com/questions/how-to-ask, stackoverflow.com/help/on-topic and stackoverflow.com/help/dont-askViktor Seifert– Viktor Seifert2013-09-11 13:47:21 +00:00Commented Sep 11, 2013 at 13:47
2 Answers
Lets say you have your code files in
[someDirectory]
|
+-[lib]
| |
| +-someLib.jar
| +-someOtherLib.jar
| +-...
|
+--[src]
|
+-[net]
|
+-[name]
|
+-[one]
|
+-[two]
|
+-[main]
|
+-Main.java <- code you want to compile
and execute
then if your console is in
someDirectory>
you can compile it with
someDirectory>javac -cp "lib\*" src\net\name\one\two\main\Main.java
but this will produce Main.class file in same directory as Main.java so to execute code from net.name.one.two.main.Main class you would need to include src directory to classPath because this directory contains package that Main class is placed, so you would need to use command
someDirectory>java -cp "src;lib\*" net.name.one.two.main.Main
But it is good practice to separate class files from source files. To do this you can add -d (directory) parameter while compiling pass directory which should have compiled class files. So first create your classes directory at the same level as src directory and execute
someDirectory>javac -d "classes" -cp "lib\*" src\net\name\one\two\main\Main.java
and now to be able to execute your Main class instead creating confusion by src directory to classPath you will have to add classes directory which is more intuitive.
someDirectory>java -cp "classes;lib\*" net.name.one.two.main.Main.java
8 Comments
javac including all required jars in classpath. When you compile it then just use java -cp "lib/*" full.name.of.YourClass from folder that contains your classes structure. Normally it is done by IDE like Eclipse, NetBeans or others.Error: Could not find or load main class name.one.two.Main but when i remove folder structure its working fine.. to classpath with -cp ".;lib/*" help?c:/>, c:/someDirectory>), commands you used till now and exact command that is not working.Try this
javac -cp .;lib/lib1.jar;lib/lib2.jar src/net/*.java
lib1 and lib2 are your libraries. It assume your libraries are in lib folder. You may also need to change the destination folder for .class files.
To run the application use
java -cp bin;lib/lib1.jar;lib/lib2.jar net.mypackage.MyMainclass
net...
It assume your .class files are in bin folder.
4 Comments
java -cp bin;lib/lib1.jar;lib/lib2.jar YOUR_PACKAGE_NAME .It assume your .class files are in bin folder.net.mypackage.MyMainClass