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

我在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文件夹中。