【问题标题】:Setting Classpath Still Can't Find External Jar设置 Classpath 仍然找不到外部 Jar
【发布时间】:2012-02-25 08:32:38
【问题描述】:

我正在尝试从命令行运行 VLCJ 测试 jar。 VLCJ 需要两个外部 JAR

  • jna.jar
  • platform.jar

如果我将这些 jar 放在与我尝试运行的可执行 jar 相同的目录中,我可以成功运行它。但是,如果我将它们放在自己的目录中并执行以下操作:

java -classpath "C:\Users\Constantin\workspace\Java Libraries\JNA" -jar executable.jar

它无法从 JNA 库中找到类。我对 Java 很陌生,我的搜索没有找到可能的答案。所以我希望有人可以帮助回答:

我该如何调试呢?为什么找不到罐子?我的 -classpath 有问题吗?

提前谢谢你!

康斯坦丁

【问题讨论】:

  • @RanRag 没有;根据Java options,一旦指定-jar,所有其他类路径设置将被忽略。
  • @DaveNewton:谢谢删除我的评论。

标签: java vlcj


【解决方案1】:

显式包含 jar,或使用简单的 * 通配符,但包含可执行 jar。在命令行中指定可执行 jar 的 main 类(它将在清单中)。

java -classpath "C:\Users\Constantin\workspace\Java Libraries\JNA\*;executable.jar" com.foo.Bar

(其中com.foo.Bar 是包含main 方法的类,即应用程序入口点。)

查看Java options docs -- 一旦指定jar,所有其他类路径信息都将被丢弃,并且您指定的 jar 必须包含所有用户类。


无关,但我总是尽量避免在 Windows 上包含空格的路径。嗯,无处不在,尤其是在处理与 Java 相关的东西时。它应该工作,并且通常可以工作,但在某些情况下它不起作用(我在看你,某些应用服务器的某些版本)。

【讨论】:

  • 嘿,戴夫,我检查了 Java 选项文档。谢谢你的链接。我提取了 META-INF/MANIFEST.MF 并设置了一个类路径。这个类路径会被覆盖,还是它会被覆盖?我使用哪些选项来包含所有 jar 文件并设置主类?
  • @Constantin 老实说,不确定——如果 jar 设置了自己的类路径,它可能会使用那个。如果它包含有问题的 jar,将它们放在可执行 jar 期望它们的位置可能就足够了……但不确定,我必须尝试一下。
  • 我明白了! java -cp "C:\Users\Constantin\...\JNA\*;C:\Users\Constantin\...\vlcj\vlcj-1.2.2-test.jar" uk.co.caprica.vlcj.test.basic.TestPlayer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 2011-02-02
  • 2019-09-30
  • 2014-02-15
  • 1970-01-01
  • 2014-06-13
  • 2012-11-17
相关资源
最近更新 更多