我有一个外部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文件。
答案 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