我在c:\program1\mypackage\tools目录下保存了一个test041601.java文件如下:
package mypackage.tools;
import java.io.*;
class test041601
{
   void printString(String s)
   {
        System.out.println(s);
   }
}
并且在c:\program1\mypackage\tools目录下编译该文件成功。
然后我在c:\program1目录下保存另一个test041602.java文件如下:
package mypackage.tools;
public class test041602
{
     public static void main(String args[])
     {
          String s="hello world!";
          test041601 a=new test041601();
          a.printString(s);
     }
}
并且在c:\program1目录下编译该文件成功,但当我在c:\program1目录下运行时确报错如下:
C:\program1>java test041602
Exception in thread "main" java.lang.NoClassDefFoundError: test041602 (w
e: mypackage/tools/test041602)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader
3)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
而如果我把编译好的test041602.class文件拷贝到c:\program1\mypackage\tools目录下并运行时也报错如下:
C:\program1\mypackage\tools>java test041602
Exception in thread "main" java.lang.NoClassDefFoundError: test041602
因为对包的定义不是很了解,希望大家能帮我解答一下,谢谢。