【问题标题】:Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/log4j/Layout - While Runnig JAR from Command Prompt线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/log4j/Layout - While Runnig JAR from Command Prompt
【发布时间】:2012-10-19 14:41:29
【问题描述】:

我正在尝试从命令提示符运行一个 jar 文件。对于我尝试过的所有以下组合,我不断收到上述错误。

java -jar Mater.jar
java -cp ".:log4j-1.2.16.jar" -jar Mater.jar
java -cp log4j-1.2.16.jar -jar Mater.jar

我提取了 log4j-1.2.16.jar 以查看 Layout 是否在我引用的 jar 中并且它在那里。

我使用 Eclipse IDE“导出 jar 选项”创建了 jar,这是我的清单文件。

Manifest-Version: 1.0
Main-Class: TestController

Class-Path: apache-mime4j-0.6.jar bsh-1.3.0.jar cglib-nodep-2.1_3.jar commons-beanutils-1.8.0.jar commons-codec-1.6.jar 

Class-Path: commons-collections-3.2.1.jar commons-exec-1.1.jar commons-io-2.0.1.jar commons-jxpath-1.3.jar commons-logging-1.1.1.jar 

Class-Path: cssparser-0.9.5.jar derbyclient.jar dom4j-1.1.jar eclipselink-2.0.0.jar flash-selenium.jar guava-12.0.jar hamcrest-core-1.1.jar 

Class-Path: htmlunit-2.9.jar htmlunit-core-js-2.9.jar httpclient-4.1.3.jar httpcore-4.1.3.jar httpmime-4.1.3.jar ini4j-0.5.2.jar 

Class-Path: javax.persistence-2.0.0.jar jcommander-1.13.jar jna-3.4.0.jar jna-platform-3.4.0.jar 

Class-Path: json-20080701.jar junit-dep-4.10.jar logging-selenium-1.2.jar mail.jar mysql-connector-java-5.0.7-bin(2).jar 

Class-Path: nekohtml-1.9.15.jar netty-3.2.7.Final.jar operadriver-0.14.jar 
poi-3.6-20091214.jar poi-ooxml-3.6-20091214.jar poi-ooxml-schemas-3.6-20091214.jar 

Class-Path: protobuf-java-2.4.1.jar sac-1.3.jar saxon-8.7.jar SaxonLiaison.jar selenium-java-2.25.0.jar selenium-java-2.25.0-srcs.jar 

Class-Path: selenium-java-client-driver.jar selenium-java-client-driver-sources.jar selenium-java-client-driver-tests.jar 

Class-Path: selenium-java-client-driver-test-sources.jar selenium-server.jar selenium-server-coreless.jar 

Class-Path: selenium-server-sources.jar serializer-2.7.1.jar testng.jar testng-6.0.1-nobsh-noguice.jar testng-xslt-maven-plugin-test-0.0.jar 

Class-Path: validation-api-1.0.0.GA.jar webbit-0.4.8-SNAPSHOT.jar xalan-2.7.1.jar xercesImpl-2.9.1.jar xml-apis-1.3.04.jar xmlbeans-2.3.0.jar log4j-1.2.8.jar

我已经交叉检查了在 jar 中的类路径是否设置正确

jar tf Mater.jar

它在命令提示符下正确显示 jar 中的所有文件..

有人能解释一下吗?

【问题讨论】:

  • 我不确定,但 IIRC 使用 -jar 选项会忽略 -cp。您可能需要在 jar 的清单文件中设置类路径。
  • @Adam 我已经在清单文件中设置了类路径,如上所述,当我在命令提示符下查看 jar 内容时,所有 jar、类文件等都正确显示...
  • 你确定所有引用的jar都和Mater.jar在同一个目录吗?
  • 是的,都在项目Mater的lib文件夹中
  • manifest 中的路径是相对于主 jar (Mater.jar) 的,因此您需要更改它以使其具有正确的相对路径(例如 Class-Path: lib/protobuf-java- 2.4.1.jar)

标签: java command-line jar log4j


【解决方案1】:

我遇到了类似的问题,同样的 NoClassDefFoundError,在这里:NoClassDefFoundError after updating to Java 7

我无法解释原因,但我发现的唯一可行的解​​决方案是使用 Eclipse 导出为可运行的 JAR

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 2019-10-17
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多