【问题标题】:Java command line launcherJava 命令行启动器
【发布时间】:2012-06-11 00:04:19
【问题描述】:

所以我尝试使用类似于这些参数的命令行启动一个 jar:

java -cp "path/test.jar;path/lib.jar" -Djava.library.path="path/another_lib.jar" net.test.Test

(net.test.Test 是主类)这给了我一个 NoClassDefFoundError 异常(对于 net/test/Test)。

这对其他人来说似乎很好,所以我不确定为什么它不起作用。

【问题讨论】:

  • 该类在哪个 jar 中,并且肯定被类路径成功引用?如果它不在 .jar 中并且位于当前目录的本地,则您需要在类路径末尾添加 ;.
  • 它在 test.jar 中,所以我做错了吗?

标签: java command-line-arguments launch


【解决方案1】:

首先,-Djava.library.path=/something 告诉 JVM 在哪里可以找到本机库——即 DLL。它与查找jar 文件无关,因此如果您使用该标志来查找jar 文件,那将是一个问题。

否则,这很好。您需要确保所有这些路径都正确,并且包含 net.test.Test 的 jar 文件确实包含有问题的类,并且在 jar 文件中,Test.class 文件位于 test 目录中的 net目录。

正如 Rup 在评论中指出的那样,如果当前目录中有任何需要选择的类,则需要将当前目录“.”的条目添加到 -cp 参数.

【讨论】:

  • Djava.library.path 确实找到了本地库。抱歉,我应该指定的。
  • @Josh,你找到问题了吗?
  • 不,我没有,如果需要我可以给你我的确切参数。
  • 我打赌你的参数没问题,@Josh——不过,我会仔细检查你的 jar 文件,以确保类存储正确。
  • 好吧,我参数的“路径”部分实际上是我硬盘驱动器的确切文件路径(/Users/Josh/Library/Application Support/)我不确定这是否可以问题与否。 net.test.Test 在 test.jar 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多