Jar file gives java.lang.NoClassDefFoundError

16,862

Solution 1

You have to provide the classpath when you run java on the command line.

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

or you run it within eclipse (Launch Configuration) and eclipse provides the classpath for you. The .classpath file is an eclipse artifact and thus only recognized by eclipse.

Or you can use eclipse's runnable jar export. Export -> Runnable Jar File. Ensure that you selected "Extract required libraries into generated JAR" in the Library handling section of the export dialog.

Solution 2

When running as a jar, you need to specify the classpath as follows:

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

Alternatively, since you did an Eclipse export, select export Runnable Jar. You then have the option to Extract required libraries into generated JAR. Make sure, if you do this, that the license of these libraries allow you to do this. Then you don't need to specify the classpath.

A jar that was exported like this is easier to use.

Share:
16,862
Snels Nick
Author by

Snels Nick

Updated on June 04, 2022

Comments

  • Snels Nick
    Snels Nick almost 2 years

    I have an Eclipse project that runs fine when I run it in Eclipse. I have created a Jar file in Eclipse. But when I run it using the following command:

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

    I get the following error:

    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
    

    The contents of the jar are:

    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)
    

    The contents of the .classpath file are:

    <?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>
    

    I have already googled java.lang.NoClassDefFoundError , and have already tried a lot of stuff but none of them work. All suggestions are welcome. Thank you.