目录E:\javaworkspace\test\src\com\test\entity下放了两个Java文件:
Animal.java和Dog.java,Dog.java引用Animal.java
(1)在命令行先编译Animal.java,编译正常
再编译Dog.java,提示找不到符号
(2)命令行下同时编译两个文件正常通过,但执行Dog时抛出异常:
Exception in thread "main" java.lang.NoClassDefFoundError: Dog (wrong name: com/test/entity/Dog)
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)
补充:两个类在Eclipse中编译执行均通过,JDK配置没问题
------解决方案--------------------
源码帖出来看看。。。
------解决方案--------------------
代码不错 看了很久
------解决方案--------------------
是不是二者有继承或者组合关系?
源码看看
------解决方案--------------------
Animal 没有构造函数....
加上
public Animal()
{
}
低级错误
------解决方案--------------------
运行的时候要指出包路径(java edu.main.A),并且一定要在class文件名前带上完整的包名(edu.main.A)
就是说,包是edu.main.A,即在edu\main\A目录下,运行时,要在edu父目录下,然后运行java edu.ma8in.A,即可运行。
------解决方案--------------------
我猜是运行环境的问题,你本地的classpath是不是没加那个点'CLASSPATH:.;tool.jar;'注意冒号和分号中间有一个点