使用外部jar文件从命令行运行java应用程序

Lif*_*des 7 java command-line jar classpath noclassdeffounderror

我有一个外部jar文件(有包结构),它包含主类,我可以从命令行运行应用程序,如下所示:

java -jar example.jar
Run Code Online (Sandbox Code Playgroud)

但是我仍然test.class在这个jar文件之外有另一个文件,这个jar文件中的一些类将调用这些方法test.class.如何test.class在命令行中指定jar文件使用的文件?试过很多方法,总是表现出来:

NoClassDefFoundError for test.class
Run Code Online (Sandbox Code Playgroud)

注意:test.class文件也使用example.jar文件中的类文件,有自己的包结构.

我知道我可以把它们放在一个jar文件中,不幸的是我需要单独的test.class文件.

Aub*_*bin 11

如果类在bin目录中:

java -cp xxx.jar;bin pck1.pck2.MainClass
Run Code Online (Sandbox Code Playgroud)

如果该类位于当前目录中:

java -cp xxx.jar;. pck1.pck2.MainClass
Run Code Online (Sandbox Code Playgroud)

等等...

手册中的更多信息,请至少阅读一次... ;-)

  • *"假设test.class文件与example.jar文件在同一个文件夹中"*你怎么样拿起球并用它运行'而不是试图让我们按照你的确切规范来编码? (2认同)

Pra*_*ain 8

在 Linux 系统中

编译和运行 Java 程序以及外部 JAR。

javac -cp </path/jar1>:<path/jar2>:<path/jar3> MainClass.java
Run Code Online (Sandbox Code Playgroud)

如果编译器抛出弃用警告。您可以使用-Xlint:deprecation参数重新编译。

javac -Xlint:deprecation -cp </path/jar1>:<path/jar2>:<path/jar3> MainClass.java
Run Code Online (Sandbox Code Playgroud)

最后,运行 Java 程序:

java -cp </path/jar1>:<path/jar2>:<path/jar3>:. MainClass
Run Code Online (Sandbox Code Playgroud)

如果您想在后台运行 Java Process。您可以使用nohup

nohup java -cp </path/jar1>:<path/jar2>:<path/jar3>:. MainClass &
Run Code Online (Sandbox Code Playgroud)