如何使用此文件夹结构进行编译和运行

时间:2013-09-11 11:53:54

标签: java javac

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

2 个答案:

答案 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文件夹中。