当前位置: 代码迷 >> Java面试 >> 命令行下编译执行Java文件,编译时找不到符号解决方案
  详细解决方案

命令行下编译执行Java文件,编译时找不到符号解决方案

热度:47   发布时间:2016-04-17 17:30:10.0
命令行下编译执行Java文件,编译时找不到符号
目录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;'注意冒号和分号中间有一个点
  相关解决方案