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

时间:2012-12-01 08:43:46

标签: java command-line jar classpath noclassdeffounderror

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

java -jar example.jar

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

NoClassDefFoundError for test.class

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

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

3 个答案:

答案 0 :(得分:11)

如果该类位于bin目录中:

java -cp xxx.jar;bin pck1.pck2.MainClass

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

java -cp xxx.jar;. pck1.pck2.MainClass

依旧......

More info in the manual,请至少阅读一次......; - )

答案 1 :(得分:4)

在Linux系统中

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

javac -cp </path/jar1>:<path/jar2>:<path/jar3> MainClass.java

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

javac -Xlint:deprecation -cp </path/jar1>:<path/jar2>:<path/jar3> MainClass.java

最后,运行Java程序:

java -cp </path/jar1>:<path/jar2>:<path/jar3>:. MainClass

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

nohup java -cp </path/jar1>:<path/jar2>:<path/jar3>:. MainClass &

答案 2 :(得分:2)

您可以使用以下命令来运行java主类或java jar文件:

java -Djava.ext.dirs=E:\lib  E:\Executable\MyMainClass

java -Djava.ext.dirs=E:\lib  E:\Executable\purging.jar