带有外部.jar的Java命令行

The*_*One 26 java executable jar classpath executable-jar

我使用.jar开发一个项目来重用代码.

所以我在.jar上命名为TOOLS.jar,我在文件HelloWorld.java中开发了一个简单的应用程序,它从TOOLS.jar引用我的包TOOLS

我用这个命令行编译:

javac -g -d C:\MyApp -cp TOOLS.jar HelloWorld.java
Run Code Online (Sandbox Code Playgroud)

它很成功,当我想执行我的应用程序时,我使用这个命令(我在C:\ MyApp文件夹中):

java -cp <path>\TOOLS.jar;. HelloWorld
Run Code Online (Sandbox Code Playgroud)

它很成功,但我的问题是:

当我有多个外部.jar时,如何执行我的应用程序?

我是否必须使用-cp选项在命令中添加每个?

有没有办法只生成一个二进制文件并执行它(与C程序一样的.exe)?

Joe*_*oel 41

将每个jar文件参数连接到cp:

; on Windows
: on Linux or Mac
Run Code Online (Sandbox Code Playgroud)

例如

java -cp <path>\TOOLS.jar;.;<path>\jar2.jar;<path>\jar3.jar HelloWorld
Run Code Online (Sandbox Code Playgroud)

在更新的JVM(6+,我认为)上,您还可以使用*将所有JAR附加到目录中,例如

java -cp .;<path>\*; HelloWorld
Run Code Online (Sandbox Code Playgroud)

要更进一步并创建单个打包的可执行文件,请参阅此问题.

  • 至少对我来说,你对“.”的使用。起初这有点令人困惑。您在串联参数的不同位置使用它们,如果没有解释,读者可能会感到困惑。这 ”。” 是必要的,因为默认情况下当前目录在类路径中;但是如果我们明确指定类路径,我们必须确保明确包含当前目录。 (2认同)