为什么我在类的定义前加了package mypackage;该程序可以通过编译,但运行的时候就会报NoClassDelFoundError.如果去掉package mylpackage;程序就会正常运行。我试了好多的类都是这样的,到底申明一个包会发生什么事?

解决方案 »

  1.   

    问题没说清楚,不知详细是怎么样的?可能是编译器问题,有没有试过javac编译呢?
      

  2.   

    比如源代码是:
    package com.zhang.tools;
    public class P{
    public static void rint(String s){
    System.out.print(s);
    }
    public static void rintln(String s){
    System.out.println(s);
    }
    }
    然后:javac P.java //通过
    java P//报NoClassDelFoundError
      

  3.   

    如果去掉package com.zhang.tools;
    就可以正常运行
      

  4.   

    那是因为你没有main()方法
    应该加上public static void main(String[] args){
       // 代码段
    }
    这个方法
      

  5.   

    我加上了main方法也是一样的报错。
      

  6.   

    运行时要加上 -classpath 参数,后面跟你那个包所在的目录的绝对路径原因是这个包是你自己定义的包,JRE不知去哪里找它,所以要手动指定包的目录
      

  7.   

    我用jbuilder测试也是一样的结果.
      

  8.   

    包是指定你的这个类所在的目录,目录名就是包的名字比如你的类在d:\classPackage这个目录下,而且想声明包,那么包的名字就必须也是classPackage声明包其实就是确定包内这些类的关系,声明之前它们没啥关系,声明后就都是一个包的了,就可以调用protected类型的同包类了
      

  9.   

    我的classpath里有F:\;
    P.java在F:\com\zhang\tools下,tools里的.class文件,别的程序通过import com.zhang.tools.*也可以引用。
      

  10.   

    classpath=.;D:\Java\jdk1.5.0_12\lib;D:\Java\jdk1.5.0_12\lib\tools.jar;D:\Java\jdk1.5.0_12\lib\dt.jar;D:\Tomcat 5.5\common\lib\servlet-api.jar;D:\Tomcat 5.5\common\lib\jsp-api.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;F:\
      

  11.   

    用java com.zhang.tools.P真的可以,但是我还是不明白到底是为什么,还希望能赐教。
      

  12.   

       用package声明包后,如果用java执行,类的名字要用全限定名。
       象13楼那样 java com.zhang.tools.P;
       com.zhang.tools.P就是全限定名,即类前要加上包名。
      

  13.   

    package com.zhang.tools;
    public class P{
    public static void rint(String s){
    System.out.print(s);
    }
    public static void rintln(String s){
    System.out.println(s);
    }
    }
    然后:javac P.java //通过
    如你所述,通过之后并会生成一个 P.class 的文件,按照你定义的包package com.zhang.tools
    同目录下建立如下文件夹com->zhang->tools(依次建立)然后再把编译生成的P.class 放到 tools 文件夹下!
    最后在“ cmd”里找到P.class   java一下就OK了!!祝你成功! 
      

  14.   

    在你的程序里使用了了package以后就好像是给你的程序加了个名字,所以你在运行的时候必须要加上名字才可以的,不然就会出错了
      

  15.   

    编译:javac -d P.java
    运行:java com.zhang.tools.P