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

学习之于乐 2014-05-12 06:40:03
目录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配置没问题
...全文
410 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
学习之于乐 2014-05-14
  • 打赏
  • 举报
回复
在Eclipse中可以正常编译运行,不是缺少构造函数Java类有默认构造,我添加了,但编译Dog.java还是提示找不到符号。 我又将两个类拷贝到C盘根目录下,并且删除了两个类里面包的路径以及载入包的语句,结果可以通过编译,并且运行正常了……
  • 打赏
  • 举报
回复
我猜是运行环境的问题,你本地的classpath是不是没加那个点'CLASSPATH:.;tool.jar;'注意冒号和分号中间有一个点
wu4357815 2014-05-14
  • 打赏
  • 举报
回复
运行的时候要指出包路径(java edu.main.A),并且一定要在class文件名前带上完整的包名(edu.main.A)
就是说,包是edu.main.A,即在edu\main\A目录下,运行时,要在edu父目录下,然后运行java edu.ma8in.A,即可运行。
学习之于乐 2014-05-13
  • 打赏
  • 举报
回复
代码格式有点不规范,望亲们见谅。
学习之于乐 2014-05-13
  • 打赏
  • 举报
回复
我是初学者,这是很简单的两个小类…… //Animal.java package com.test.entity; public class Animal { private String eat; private String run; public String getEat() { return eat; } public void setEat(String eat) { this.eat = eat; } public String getRun() { return run; } public void setRun(String run) { this.run = run; } } //Dog.java package com.test.entity; import com.test.entity.*; public class Dog { public static void main(String[] args) { Animal dog = new Animal(); String dogEat; String dogRun; dog.setEat("小狗吃骨头!"); dog.setRun("小狗喜欢动!"); dogEat = dog.getEat(); dogRun = dog.getRun(); System.out.print(dogEat + dogRun); } }
TseJinMing 2014-05-13
  • 打赏
  • 举报
回复
Animal 没有构造函数.... 加上 public Animal() { } 低级错误
学习之于乐 2014-05-13
  • 打赏
  • 举报
回复
俺是小王子 2014-05-12
  • 打赏
  • 举报
回复
是不是二者有继承或者组合关系? 源码看看
zengchuisheng 2014-05-12
  • 打赏
  • 举报
回复
代码不错 看了很久
wu4357815 2014-05-12
  • 打赏
  • 举报
回复
源码帖出来看看。。。

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧