我的两个源文件:文件1:Cookie.java
package com.wym.access.dessert;public class Cookie
{
public Cookie() {
System.out.println("Cookie constructor");
}
void bite() { System.out.println("bite"); }
}文件2:Dinner.java
package com.wym.access.dessert;import com.wym.access.dessert.Cookie;public class Dinner
{
public static void main(String[] args) {
Cookie x = new Cookie();
x.bite(); // Can't access
}
} 将以上两个文件的package和import语句都注释掉,放在同一个文件夹内,使用默认的包权限。然后命令行输入
javac Dinner.java;java Dinner后程序可以输出正确的结果。但是加入package和import语句后,执行javac Dinner.java编译没有错误,执行java Dinner时弹出如下异常提示:
D:\java4th_classlib\com\wym\access\dessert>javac Dinner.javaD:\java4th_classlib\com\wym\access\dessert>java Dinner
Exception in thread "main" java.lang.NoClassDefFoundError: Dinner (wrong name: c
om/wym/access/dessert/Dinner)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:472)
求高手解答是怎么回事?我的CLASSPATH设置为:
.;D:\java4th_classlib;C:\Program Files\Java\jdk1.7.0\lib\dt.jar;C:\Program Files\Java\jdk1.7.0\lib\tools.jar
package com.wym.access.dessert;public class Cookie
{
public Cookie() {
System.out.println("Cookie constructor");
}
void bite() { System.out.println("bite"); }
}文件2:Dinner.java
package com.wym.access.dessert;import com.wym.access.dessert.Cookie;public class Dinner
{
public static void main(String[] args) {
Cookie x = new Cookie();
x.bite(); // Can't access
}
} 将以上两个文件的package和import语句都注释掉,放在同一个文件夹内,使用默认的包权限。然后命令行输入
javac Dinner.java;java Dinner后程序可以输出正确的结果。但是加入package和import语句后,执行javac Dinner.java编译没有错误,执行java Dinner时弹出如下异常提示:
D:\java4th_classlib\com\wym\access\dessert>javac Dinner.javaD:\java4th_classlib\com\wym\access\dessert>java Dinner
Exception in thread "main" java.lang.NoClassDefFoundError: Dinner (wrong name: c
om/wym/access/dessert/Dinner)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:472)
求高手解答是怎么回事?我的CLASSPATH设置为:
.;D:\java4th_classlib;C:\Program Files\Java\jdk1.7.0\lib\dt.jar;C:\Program Files\Java\jdk1.7.0\lib\tools.jar
解决方案 »
- eclipse功能不见了
- express4j开发
- 问一个有难度的HttpUrlConnection问题,高手帮忙!
- Applet有哪些安全限制???
- 图片显示成缩略图遇到的问题~~ 大家来帮帮忙啊
- 想问一下HashMap 和 Hashtable 这两个类的区别!!??
- java有科学计算的类库吗?比如解个常微分方程什么的?谢谢
- ***关于DefaultTableModel的小问题--各位高手,欢迎进来看看--很容易拿分的哦!!!
- 我想认识JAVA程序员
- 苦闷了我一晚还是没能解决的写入读出问题!在线寻助!100分酬报!!
- DataInputStream.readUTF()可以读出值,为什么改用BufferedReader.readLine()就不行了
- 我知道,是因为static的原因.......想实现这个动态二维数组B,不要有A的元素,我该怎么办啊?
package xxx.ooo;那么你的class文件应该放在
D:\java4th_classlib\com\wym\access\dessert\xxx\ooo\Dinner.class 这里然后在:
D:\java4th_classlib\com\wym\access\dessert> 这里执行java Dinner
D:\java4th_classlib> 这里执行java com.wym.access.dessert.Dinner
D:\java4th_classlib\com\wym\access\dessert\Dinner.class然后你这样:
D:\java4th_classlib>java com.wym.access.dessert.Dinner
1、明确要执行的类是根路径的Dinner类下的main函数;
2、查找CLASSPATH,看有没有Dinner.class;
3、查看Dinner.class是否其包路径为根;// 这里就失败了
4、查找Dinner.class有没有main函数;
5、调用该main函数。反之如果你执行:java com.wym.access.dessert.Dinner:
1、明确要执行的类是com.wym.access.dessert路径的Dinner类下的main函数;
2、查找CLASSPATH,看有没有com目录,进而看看有没有wym目录,然后是access目录,最后是desser目录,有没有Dinner.class;
3、查看Dinner.class其包路径是否为com.wym.access.dessert;
等等...
-d 是表示当前路径下的你所在的这个包,这样就可以简便很多