关于错误Exception in thread “main” java.lang.NoClassDefFoundError

1、使用Eclips创建工程java3,然后下面创建一个Package,名字是java3,在该包下创建一个java文件,名字为Wang.java,内容如下: Wang.java文件的内容 *************************************** package java3; import javax.swing.*; import java.lang.*; public class Wang { public static void main(String[] args) { // TODO Auto-generated method stub JOptionPane.showMessageDialog(null,”welcome”, wsj”,JOptionPane.PLAIN_MESSAGE); int a; a=(-10)%(-3); System.out.print(a+” zhe shi jie guo”); System.exit(0); } } ****************************************************************** 2、在软件eclipse内运行没有问题,接着在指定目录下编译运行,结果出问题,编译能通过,但是执行java虚拟机时出错,具体如下: E:eclipsejava3srcjava3>javac Wang.java E:eclipsejava3srcjava3>java Wang Exception in thread “main” java.lang.NoClassDefFoundError: Wang (wrong name: java3/Wang) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) 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) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 3、检查环境变量 CLASSPATH设置为 .;C:Program FilesJavajdk1.7.0_60libdt.jar;C:Program FilesJavajdk1.7.0_60libtools.jar; PATH变量为 C:Perlbin;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;C:Program FilesWIDCOMMBluetooth Software;C:Program FilesATI TechnologiesATI.ACECore-Static;C:eclipselibjunit-4.11.jar;C:Program FilesJavajdk1.7.0_60bin;C:Program FilesJavajdk1.7.0_60jrebin; 以上添加的为绝对路径,没有使用变量JAVA_HOME 4、后来在软件Eclips中将该Wang.java文件选择最上面一行,删除,然后提示中 选择下面一项,Move “Wang.java” to the default package 接着编译和运行都正常了。 Asics Gel Kinsei 6 Femme basket new balance 5、所以问题出在代码上,代码分为带包名和不带包名两类。 buy gil online Nike Dunk Mid femme 刚刚我写的是带包名的情况,估计运行时不能直接使用那种格式。 soldes new balance pas cher Nike Roshe femme 经验证也是这种情况。 Adidas Zx 850 Homme New Balance 530 homme 如果带了包名。 Nike Air Max 2011 Homme Asics Gel Kinsei 6 Homme 就是带了下面这一行的话 package abc; 那么在编译时是可以的,但是编译后生成的文件Wang.class需要放在文件夹abc下面,具体运行如下: E:eclipsenewsrc 的目录 2017/08/19 15:53 <DIR> . New Balance 999 homme Adidas Zx 700 Femme Noir 2017/08/19 15:53 <DIR> .. New Balance 997.5 femme Adidas Zx Flux Femme Fleur 2017/08/19 15:53 <DIR> abc 2017/08/19 13:09 353 Wang.java 2017/08/19 12:54 821 Wang.class 2017/08/19 12:54 342 Wang.java 3 个文件 1,516 字节 3 个目录 27,248,537,600 可用字节 E:eclipsenewsrc>javac Wang.java 编译好后,将生成的文件Wang.class拷贝到src下面的abc目录中,然后执行java虚拟机,执行的格式如下: E:eclipsenewsrc>java abc.Wang -1 zhe shi jie guo E:eclipsenewsrc> 后面就正常了 6、总结:如果代码包含package abc; 就需要在当前编译目录下创建文件夹abc,然后将生成的class拷贝进去,然后运行的时候跟原来也不一样。 Nike Air Max Thea Femme Rose Adidas Zx 500 Homme 备注:测试时请注意大小写,虽然Windows是不区分大小写的,但是Java确是区分大小写的。

This entry was posted in 计算机软件, 软件测试 and tagged , . Bookmark the permalink.