package com.fan;public class RandomNum
{
public  static void main(String[] args)
{          }
}
程序编译后,并没有把这个类放到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" 
请帮忙解决。

解决方案 »

  1.   

    编译加参数:
    javac -d . RandomNum.java
    运行时加包名:
    java  com.fan.RandomNum
    如果你用GUI工具,如:eclipse,它会自动生成和执行
      

  2.   

    运行时,其从com.fan下找RandomNum类 所以你必须把编译后的class文件放到com/fan/目录下
      

  3.   

    javac -d (directory): Specify where to place generated class file或者你自己建立文件夹:com-〉fan,然后把编译后的.class放在其中!
      

  4.   

    确定你的class是否在com.fan的package中,即你的包确实存在。
    运行java com.fan.RandomNum
      

  5.   

    一旦添加package就可以当成把这个CLASS的名字与包名联系到一起了  所以执行的时候首先你要了解你的CLASSPATH是否默认为.如果是,那需要在当前目录下执行,并且需要给出CLASS的完整名称(包名+类名)
      

  6.   

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