我在 src/net/... 文件夹中有我的 java 源文件,在 lib 文件夹中有 .jar 文件。如何在不编写构建脚本的情况下使用命令行编译和运行这些文件?
问问题
4336 次
2 回答
4
假设你有你的代码文件
[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
但最好将类文件与源文件分开。为此,您可以-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
于 2013-09-11T11:58:27.383 回答
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 文件夹中。
于 2013-09-11T12:14:43.993 回答