NoClassDefFoundError when running java program in linux/ubuntu -
i'm unable run java program in linux/ubuntu.
i've been working on problem whole day , can't seem find solution. wrote small java program using eclipse on windows 7 machine , works fine. here's code:
//start of java program jsonreader package jsonreader; //imports needed run program import java.io.filenotfoundexception; import org.codehaus.jackson.map.*; import org.codehaus.jackson.*;
in order import org.codehause.jackson.. work, had manually include in project jar file: jackson-all-1.9.11.jar
//class jsonreader public class jsonreader { //start of main public static void main (string[] args) throws filenotfoundexception {
the rest of program works fine.
the next step project run on ubuntu - command line. did export on eclipses: file -> export -> general -> archive file -> , created zip file.
this zip file transferred linux/ubuntu enviornment. there, unzipped file. directory structure:
in home directory have:
/jsonreader --> has following directories in it: -/bin/jsonreader/jsonreader.class -/lib/jackson-all-1.9.11.jar -/src/jsonreader/jsonreader.java -.classpath (file); , few other files.
in /jsonreader/src/jsonreader run command: javac jsonreader.java --> error:
jsonreader.java:6: package org.codehaus.jackson.map not exist import org.codehaus.jackson.map.*; ^ jsonreader.java:7: package org.codehaus.jackson not exist import org.codehaus.jackson.*; ^
then run command:
javac -classpath /jsonreader/lib/jackson-all-1.9.11.jar jsonreader.java
i no errors. command creates jsonreader.class file in /src/jsonreader directory. try run file using command:
java jsonreader
i error:
exception in thread "main" java.lang.noclassdeffounderror: jsonreader (wrong name: jsonreader/jsonreader) @ java.lang.classloader.defineclass1(native method) @ java.lang.classloader.defineclass(classloader.java:634) @ java.security.secureclassloader.defineclass(secureclassloader.java:142) @ java.net.urlclassloader.defineclass(urlclassloader.java:277) @ java.net.urlclassloader.access$000(urlclassloader.java:73) @ java.net.urlclassloader$1.run(urlclassloader.java:212) @ java.security.accesscontroller.doprivileged(native method) @ java.net.urlclassloader.findclass(urlclassloader.java:205) @ java.lang.classloader.loadclass(classloader.java:321) @ sun.misc.launcher$appclassloader.loadclass(launcher.java:294) @ java.lang.classloader.loadclass(classloader.java:266) not find main class: jsonreader. program exit.
this entire error message i'm getting, when running on command line.
i'm not sure why i'm getting error , how resolve it.
you have run program so
java -cp /jsonreader/lib/jackson-all-1.9.11.jar jsonreader.jsonreader
assuming jackson jar in /jsonreader/lib
.
you need use qualified class name of class main
method want run.
an example can work.
create following structure
/project /src /jsonreadertemp /jsonreader.java /bin /jsonreadertemp /jsonreader.class /lib /jackson-all-1.9.11.jar
you can either create manually or use command line it, you.
with above, cd
project
, run
java -cp lib/jackson-all-1.9.11.jar;bin jsonreadertemp.jsonreader
note ;
separator classpath directories.
note java convention states class names should start uppercase character, jsonreader
, package names should lowercase, separating words .
if need (but there shouldn't words that).
Comments
Post a Comment