【问题标题】:Run java application from command line with external jar files使用外部 jar 文件从命令行运行 java 应用程序
【发布时间】:2012-11-19 10:03:58
【问题描述】:

我有一个包含主类的外部 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 文件。

【问题讨论】:

  • 阅读 oracle 教程中的类路径。

标签: java command-line jar classpath noclassdeffounderror


【解决方案1】:

如果类在 bin 目录中:

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

如果类在当前目录中:

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

等等……

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

【讨论】:

  • 对不起,不在工作区,没有 bin 目录。假设 test.class 文件与 example.jar 文件位于同一文件夹中
  • "假设 test.class 文件与 example.jar 文件在同一个文件夹中" 不如你“捡起球跑起来”而不是试图得到我们要根据您的确切规格对其进行编码吗?
  • 我想我忘了提到一件重要的事情:test.class 也使用 example.jar 中的类文件,并且也有自己的包结构......你使用 ;分开类路径来搜索类文件?
  • 说真的java.exe -?有多难
  • @Aubin 我在问 LifeOnCodes 哈哈。如果他刚刚做了java.exe -?,这个问题本来可以为他总结出来的。
【解决方案2】:

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

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

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

【讨论】:

  • 谢谢。为我工作
【解决方案3】:

在 Linux 系统中

与外部 JAR 一起编译和运行 Java 程序。

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 进程。您可以使用 nohup

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

【讨论】:

    猜你喜欢
    • 2021-11-10
    • 2012-07-09
    • 2021-04-08
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多