NoClassDefFoundError in Package -
i'm having issue noclassdeffounderror when running java windows command prompt. put main testlogger.java file in c:\mywork , 4 other java files in c:\mywork\logging organized package.
there no difficulty compiling these files (javac testlogger.java), or creating jar file, failed when trying run compiled testlogger, , got "exception in thread 'main' java.lang.noclassdeffounderror".
i did searching on web, , found folks getting error trying run single simple helloworld program. tried own helloworld.java in c:\mywork , weird enough, there no problem compiling , running it. , none of various solutions found on web such checking environment variable, , adding period after -classpath parameter, work miracle in case.
i'm using jdk 1.7 on windows xp. i'm sure there's nothing wrong environment variables. below full contents of source files (an example jeff friesen's 2nd edition of learn java android development, p. 175). can shed light on this. in advance!
in c:\mywork have 1 single file main entrance.
testlogger.java:
package logging; import logging.logger; import logging.loggerfactory; public class testlogger { public static void main(string[] args) { logger logger = loggerfactory.newlogger(loggerfactory.console); if (logger.connect()) { logger.log("test message #1"); logger.disconnect(); } else system.out.println("cannot connect console-based logger"); logger = loggerfactory.newlogger(loggerfactory.file, "x.txt"); if (logger.connect()) { logger.log("test message #2"); logger.disconnect(); } else system.out.println("cannot connect file-based logger"); logger = loggerfactory.newlogger(loggerfactory.file); if (logger.connect()) { logger.log("test message #3"); logger.disconnect(); } else system.out.println("cannot connect file-based logger"); } } in c:\mywork\logging folder have 4 files:
1) logger.java:
package logging; public interface logger { boolean connect(); boolean disconnect(); boolean log(string msg); } 2) console.java:
package logging; public class console implements logger { private string dstname; console(string dstname) { this.dstname = dstname; } @override public boolean connect() { return true; } @override public boolean disconnect() { return true; } @override public boolean log(string msg) { system.out.println(msg); return true; } } 3) file.java:
package logging; public class file implements logger { private string dstname; file(string dstname) { this.dstname = dstname; } @override public boolean connect() { if (dstname == null) return false; system.out.println("opening file " + dstname); return true; } @override public boolean disconnect() { if (dstname == null) return false; system.out.println("closing file " + dstname); return true; } @override public boolean log(string msg) { if (dstname == null) return false; system.out.println("writing "+msg+" file " + dstname); return true; } } 4) loggingfactory.java:
package logging; public abstract class loggerfactory { public final static int console = 0; public final static int file = 1; public static logger newlogger(int dsttype, string... dstname) { switch (dsttype) { case console: return new console(dstname.length == 0 ? null : dstname[0]); case file: return new file(dstname.length == 0 ? null : dstname[0]); default: return null; } } }
Comments
Post a Comment