我的classPath路径是:   .;D:\Java\Example;D:\Java;其中我在D:\Java\com\fan中有这样一个类:package com.fan;//import com.fan.*;public class RandomNum
{
public  static void main(String[] args)
{
System.out.println("RandomNum in package com.fan");
}
}编译成功,但是运行就错误。错误内容如下:java.lang.NoClassDefFoundError: RandomNum (wrong name: com/fan/RandomNum)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
Exception in thread "main" 当我把package com.fan;去掉时,编译运行都成功。为什么有package com.fan;时,编译就成功,但运行就出现上面的错误??

解决方案 »

  1.   

    你在D:\Java目录下
    运行 java com.fan.RandomNum
      

  2.   

    见你的另一帖
    http://community.csdn.net/Expert/topic/4305/4305330.xml?temp=.4002954
      

  3.   

    package命令是在当前工程下(编译目录)下的文件夹加入.也就是说你打命令行的目录位置很重要啊.只有在D:\JAVA>提示符下才能找到当前文件夹下的COM.FAN(D:\JAVA\COM\FAN)
      

  4.   

    为什么一定要java com.fan.RandomNum运行?
    这样运行确实成功了。
      

  5.   

    为什么要给出完整包名?编译器不是首先搜索classpath吗?它搜索到RandomNum类后,为什么会说找不到类?
      

  6.   

    classpath下面只能找到包(或目录)com,而不是直接类RandomNum