0

我在 src/net/... 文件夹中有我的 java 源文件,在 lib 文件夹中有 .jar 文件。如何在不编写构建脚本的情况下使用命令行编译和运行这些文件?

4

2 回答 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 回答