如何编译和运行此文件夹结构
我在lib文件夹中的src / net / …文件夹和.jar文件中有我的java源文件。 如何在不编写构建脚本的情况下使用命令行编译和运行此文件?
让我们说你有你的代码文件
[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.java
相同的目录中生成Main.class
文件,所以要从net.name.one.two.main.Main
类执行代码,你需要将src
目录包含到classPath中,因为这个目录包含Main
类的包放置,所以你需要使用命令
someDirectory>java -cp "src;lib\*" net.name.one.two.main.Main
但是将类文件与源文件分开是一种很好的做法。 为此,您可以在编译应该具有已编译类文件的pass目录时添加-d
(目录)参数。 因此,首先在与src
目录相同的级别创建classes
目录并执行
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
尝试这个
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文件夹中。