【发布时间】: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