比如我有这个路径d:/a/
----------------
package a;
class dog{
  public dog(){}
}
------------------同时再来一个mkDog,
package a;
class mkDog{
public mkDog(){
new dog();
}
}
------------------------------
为什么可以编译但是运行会出错呢?
Exception in thread "main" java.lang.NoClassDefFoundError

解决方案 »

  1.   

    那也得让我们看到main啊?
      

  2.   

    需要一个public class,而且包含static void main(String args[])的方法
      

  3.   

    你还没有写main函数呢 所以执行不了啊
      

  4.   

    可能是我写的太简单了.
    --------------------------------------
    package a;
    class dog{
    public dog(){}
    }
    ----------------------------------------
    package a;
    class mkDog{
    public static void main(String[] arg){
    new dog();
    }
    }
    ------------------------------------------
    我意思就是如果像这样都package在一个包里.编译以后,mkDog这个class不能运行啊.
      

  5.   

    win32下?
    先执行 set CLASSPATH=d:;%CLASSPATH%
      

  6.   

    这个环境变量已经设置了.
    目录这样没错吧?
    d:/a/Dog.class
    d:/a/mkDog.class这个mkdog.java要放在根目录才能编译.
    但是编译的class不能运行
      

  7.   

    mkdog.java应该在a目录下吧。
    把你完整的编译执行脚本发上来看看。
      

  8.   

    ---------------------------------
    package a;
    public class Dog{
    String s;
    public Dog(){
    s="Dog";
    }
    public String toString(){
    return s;
    }
    }
    ------------------------------------------
    package a;
    public class MkDog{
    public static void main(String[] arg){
    System.out.println(new Dog());
    }
    }
    -------------------------------------------
    这两个,然后我的环境变量设了比如  f:\java\
    我新建一个a 文件夹.
    dog.java 可以放在f:\java\a 下编译没错.但是 MkDog.java 竟然都不能放在f:\java\a 下编译,而只能在f:\java\ 下编译?
      

  9.   

    在f:\java\ 下编译MkDog后,不能运行.
    ----------------------------------------
    把package去掉,换成 import a.*;
    也只能在f:\java\ 下编译,可以运行.
    但是换在其他目录下就不能运行????也不能编译.
    太奇怪了?
    还是我对package 和环境变量的理解有错误啊?
      

  10.   

    我晕!!
    竟然是这个问题.
    class_path 和 classpath !!
    这两个什么区别啊?