2

Eclipse で実行すると正常に動作する Eclipse プロジェクトがあります。Eclipse で Jar ファイルを作成しました。しかし、次のコマンドを使用して実行すると:

D:\Java\projects\fetch>java -Xss1000m -XX:-UseGCOverheadLimit -Xmx5048m -jar bin\fetch.jar

次のエラーが表示されます。

Exception in thread "main" java.lang.NoClassDefFoundError: info/monitorenter/cpdetector/io/ICodepageDetector
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: info.monitorenter.cpdetector.io.ICodepageDetector
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 6 more

jar の内容は次のとおりです。

com (folder)
dist (folder)
doc (folder)
lib  (folder, contains all the jars, including the cpdetector jar)
META-INF (folder)
resources (folder)
sources (folder)
.classpath (file)
.project (file)
hibernate.cfg.xml (file)
log4j.xml (file)

.classpath ファイルの内容は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="D:/Java/projects/boilerpipe-master/target/boilerpipe-core-1.2.2.jar"/>
<classpathentry kind="lib" path="D:/Java/projects/boilerpipe-master/target/boilerpipe-core-1.2.2-jar-with-dependencies.jar"/>
<classpathentry kind="lib" path="lib/jsoup-1.7.2.jar"/>
<classpathentry kind="lib" path="lib/ahocorasick-1.4-SNAPSHOT-all.jar"/>
<classpathentry kind="lib" path="lib/ahocorasick-1.4-SNAPSHOT.jar"/>
<classpathentry kind="lib" path="lib/antlr-3.4-complete.jar"/>
<classpathentry kind="lib" path="lib/chardet.jar"/>
<classpathentry kind="lib" path="lib/commons-fileupload-1.2.2.jar"/>
<classpathentry kind="lib" path="lib/commons-httpclient-3.1.jar"/>
<classpathentry kind="lib" path="lib/commons-io-2.4.jar"/>
<classpathentry kind="lib" path="lib/commons-lang-2.6.jar"/>
<classpathentry kind="lib" path="lib/commons-lang3-3.1.jar"/>
<classpathentry kind="lib" path="lib/commons-validator-1.4.0.jar"/>
<classpathentry kind="lib" path="lib/horrorss-2.2.0.jar"/>
<classpathentry kind="lib" path="lib/jackson-core-2.1.4.jar"/>
<classpathentry kind="lib" path="lib/jackson-core-asl-1.9.12.jar"/>
<classpathentry kind="lib" path="lib/jackson-mapper-asl-1.9.12.jar"/>
<classpathentry kind="lib" path="lib/jdom-1.1.3.jar"/>
<classpathentry kind="lib" path="lib/jdom-2.0.4.jar"/>
<classpathentry kind="lib" path="lib/jericho-html-3.3.jar"/>
<classpathentry kind="lib" path="lib/jline.jar"/>
<classpathentry kind="lib" path="lib/joda-time-2.2.jar"/>
<classpathentry kind="lib" path="lib/lucene-analyzers-3.6.2.jar"/>
<classpathentry kind="lib" path="lib/lucene-core-3.6.2.jar"/>
<classpathentry kind="lib" path="lib/nekohtml-1.9.13.jar"/>
<classpathentry kind="lib" path="lib/rome-1.0.jar"/>
<classpathentry kind="lib" path="lib/tika-app-1.3.jar"/>
<classpathentry kind="lib" path="lib/xerces-2.9.1.jar"/>
<classpathentry kind="lib" path="lib/xstream-1.4.4.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/envers/hibernate-envers-4.2.0.Final.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/jpa/hibernate-entitymanager-4.2.0.Final.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/required/antlr-2.7.7.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/required/dom4j-1.6.1.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/required/hibernate-commons-annotations-4.0.1.Final.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/required/hibernate-core-4.2.0.Final.jar" sourcepath="C:/Users/Nick/.m2/repository/org/hibernate/hibernate-core/4.2.0.Final/hibernate-core-4.2.0.Final-sources.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/required/hibernate-jpa-2.0-api-1.0.1.Final.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/required/javassist-3.15.0-GA.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/required/jboss-logging-3.1.0.GA.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/required/jboss-transaction-api_1.1_spec-1.0.0.Final.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/optional/ehcache/ehcache-core-2.4.3.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/optional/ehcache/hibernate-ehcache-4.2.0.Final.jar"/>
<classpathentry kind="lib" path="lib/hibernate-release-4.2.0.Final/optional/ehcache/slf4j-api-1.6.1.jar"/>
<classpathentry kind="lib" path="C:/java/tomcat6/tomcat 6.0.35/lib/mysql-connector-java-5.1.22-bin.jar"/>
<classpathentry kind="lib" path="lib/htmlcleaner-2.4.jar"/>
<classpathentry kind="lib" path="lib/freebase-java-1.0.0.jar"/>
<classpathentry kind="lib" path="lib/javax.mail.jar"/>
<classpathentry kind="lib" path="lib/opencsv-2.3.jar"/>
<classpathentry kind="lib" path="lib/google-api-client-1.14.1-beta.jar"/>
<classpathentry kind="lib" path="lib/google-http-client-1.14.1-beta.jar"/>
<classpathentry kind="lib" path="lib/json-simple-1.1.1.jar"/>
<classpathentry kind="lib" path="lib/json-smart-1.1.jar"/>
<classpathentry kind="lib" path="lib/javatuples-1.2.jar"/>
<classpathentry kind="lib" path="lib/json-path-0.8.1.jar" sourcepath="C:/Users/Nick/.m2/repository/com/jayway/jsonpath/json-path/0.8.1/json-path-0.8.1-sources.jar"/>
<classpathentry kind="lib" path="lib/json-20090211.jar"/>
<classpathentry kind="lib" path="lib/lucene-4.3.0/core/lucene-core-4.3.0.jar"/>
<classpathentry kind="lib" path="lib/lucene-4.3.0/suggest/lucene-suggest-4.3.0.jar"/>
<classpathentry kind="lib" path="lib/solr-core-4.2.1.jar"/>
<classpathentry kind="lib" path="lib/solr-solrj-4.2.1.jar"/>
<classpathentry kind="lib" path="lib/quartz-all-2.1.7.jar"/>
<classpathentry kind="lib" path="lib/simplelatlng-1.2.0.jar"/>
<classpathentry kind="lib" path="lib/obsidian.jar"/>
<classpathentry kind="lib" path="lib/CareerjetAPIClient.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre6"/>
<classpathentry kind="lib" path="lib/goose-2.1.22-jar-with-dependencies.jar"/>
<classpathentry kind="con" path="com.ateji.bldt.ui.ATEJILIB_CONTAINER"/>
<classpathentry kind="lib" path="lib/commons-lang-2.4.jar"/>
<classpathentry kind="lib" path="lib/commons-logging-1.0.4.jar"/>
<classpathentry kind="lib" path="lib/httpclient-4.2.3.jar"/>
<classpathentry kind="lib" path="lib/httpcore-4.2.2.jar"/>
<classpathentry kind="lib" path="lib/httpmime-4.2.3.jar"/>
<classpathentry kind="lib" path="lib/commons-codec-1.2.jar"/>
<classpathentry kind="lib" path="lib/commons-math3-3.2.jar" sourcepath="sources"/>
<classpathentry kind="lib" path="lib/guava-14.0.1.jar"/>
<classpathentry kind="lib" path="lib/cpdetector_1.0.10.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

私はすでに java.lang.NoClassDefFoundError をグーグルで検索しており、すでに多くのことを試しましたが、どれも機能しません。すべての提案を歓迎します。ありがとうございました。

4

2 に答える 2

4

コマンドラインで java を実行するときは、クラスパスを指定する必要があります。

java -cp lib/commons-fileupload-1.2.2.jar;......

または、eclipse (起動構成) 内で実行すると、eclipse がクラスパスを提供します。.classpath ファイルは Eclipse アーティファクトであるため、Eclipse によってのみ認識されます。

または、Eclipse の実行可能な jar exportを使用できます。Export -> Runnable Jar File. エクスポート ダイアログの [ライブラリ処理] セクションで [必要なライブラリを生成された JAR に抽出する] が選択されていることを確認します。

于 2013-10-16T10:09:35.623 に答える
1

jar として実行する場合は、次のようにクラスパスを指定する必要があります。

java -cp libOne.jar;libTwo.jar;... -jar myJar.jar

または、Eclipse エクスポートを行ったので、 export を選択しますRunnable Jar。次に、オプションがありますExtract required libraries into generated JAR。これを行う場合は、これらのライブラリのライセンスで許可されていることを確認してください。その後、クラスパスを指定する必要はありません。

このようにエクスポートした jar の方が使いやすいです。

于 2013-10-16T10:18:23.507 に答える