我的java源文件位于lib文件夹中的src / net / ...文件夹和.jar文件中。如何在不编写构建脚本的情况下使用命令行编译和运行此文件?
答案 0 :(得分:3)
假设您有
中的代码文件[someDirectory]
|
+-[lib]
| |
| +-someLib.jar
| +-someOtherLib.jar
| +-...
|
+--[src]
|
+-[net]
|
+-[name]
|
+-[one]
|
+-[two]
|
+-[main]
|
+-Main.java <- code you want to compile
and execute
然后如果你的控制台在
someDirectory>
你可以用
编译它someDirectory>javac -cp "lib\*" src\net\name\one\two\main\Main.java
但这将在Main.class
的同一目录中生成Main.java
文件,因此要从net.name.one.two.main.Main
类执行代码,您需要将src
目录包含在classPath中,因为此目录包含放置Main
类的包,因此您需要使用命令
someDirectory>java -cp "src;lib\*" net.name.one.two.main.Main
但是将类文件与源文件分开是一种很好的做法。为此,您可以在编译应具有已编译类文件的pass目录时添加-d
(目录)参数。因此,首先在与classes
目录相同的级别创建src
目录并执行
someDirectory>javac -d "classes" -cp "lib\*" src\net\name\one\two\main\Main.java
现在能够执行Main
类而不是通过src
目录创建混淆到classPath,您将不得不添加classes
目录,这更直观。
someDirectory>java -cp "classes;lib\*" net.name.one.two.main.Main.java
答案 1 :(得分:0)
试试这个
javac -cp .;lib/lib1.jar;lib/lib2.jar src/net/*.java
lib1和lib2是你的库。它假设您的库位于lib文件夹中。您可能还需要更改.class文件的目标文件夹。
要运行应用程序
java -cp bin;lib/lib1.jar;lib/lib2.jar net.mypackage.MyMainclass
...净
假设您的.class文件位于bin文件夹中。