【问题标题】:Setting classpath for a JAR为 JAR 设置类路径
【发布时间】:2012-02-06 01:29:51
【问题描述】:

我有一个独立的 java 项目。我已经执行了 Maven 全新安装。我现在通过命令提示符进入 target\classes 文件夹并在类路径中设置所有必需的文件。现在我执行主类。结果正在显示。

现在我通过命令提示符回到目标文件夹并尝试执行 jar 文件(jar 文件有一个清单文件,其中定义了主类)。

Java -cp %CLASSPATH% -jar Destination-01.19-SNAPSHOT.jar

现在我得到以下异常。我还从上面的语句中删除了 classpath 属性,但仍然得到相同的异常。所需的类设置在 classpath 变量中,这就是我能够在不使用 -jar 属性的情况下运行主类的原因。

线程“主线程”中的异常 java.lang.NoClassDefFoundError: org/apache/co mons/日志/LogFactory

【问题讨论】:

  • 我认为你需要将类路径放在你的 MANIFEST 文件中
  • 检查this too
  • 不,不是。尝试打印 echo %CLASSPATH% 并查看包含 LogFactory 类的 jar 文件是否存在。
  • 谢谢。它在类路径中 - echo %CLASSPATH%:.m2\repository\commons-logging\commons-logging \1.1\commons-logging-1.1.jar;.m2\repository\log4j\log4j\1.2.14\l og4j -1.2.14.jar;如果它不在类路径中,那么我想独立的主类也不应该被执行。
  • 感谢 Jake 和 Ring Bearer。我会尝试一下 - 我正在使用 Maven。罐子不会带走任何放在外面的东西吗?

标签: java jar classpath


【解决方案1】:

当您使用-jar 时,这是为程序设置类路径的唯一机制。

您必须在清单的 Class-Path 行中列出您需要的所有 jar(这意味着它们需要在本地文件系统中找到),或者创建一个能够定位您需要的 jar 的自定义类加载器。

【讨论】:

    【解决方案2】:

    似乎 -cp 和 -jar 不兼容。您需要将类路径放在清单中

    http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

    如果你想让 maven 自动更新类路径,请参见:-

    http://maven.apache.org/shared/maven-archiver/examples/classpath.html

    【讨论】:

    • 谢谢彼得!我在 中设置了一个依赖项-但这没有添加到清单中的类路径中。
    猜你喜欢
    • 1970-01-01
    • 2011-01-08
    • 2014-04-17
    • 2020-06-07
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多