JAVA_HOME => D:\Progra~1\j2sdk1.4.2_15
CLASSPATH => D:\Progra~1\j2sdk1.4.2_15\lib\tools.jar;D:\Progra~1\j2sdk1.4.2_15\lib\dt.jar;.path => ...;D:\Progra~1\j2sdk1.4.2_15\bin;...(省略其他)jdk被安装在了D:\Progra~1\j2sdk1.4.2_15下面D:\Progra~1\j2sdk1.4.2_15\lib\tools.jar和D:\Progra~1\j2sdk1.4.2_15\lib\dt.jar都存在。运行java命令可以出来正常的提示。
但是运行javac的时候却提示:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac/Main请问这是什么原因?

解决方案 »

  1.   

    再说明一下,我的电脑里装了oracle10,不知道是否因此而引起的。
      

  2.   

    LZ是怎么执行javac命令的?
    ClassPath中有你要编译的source的路径吗?如果没有,有当前路径.吗?你是在source路径下编译的还是在其他路径下编译的?
      

  3.   

    楼主问对地方了
    在桌面,右击“我的电脑”->“属性”->“高级”
    在"系统变量"中,"新建 " (如果已经存在,则编辑)
    变量名ClassPath
    值(特别注意前面是一个点号,一个分号!!然后跟着tools.jar的路径,rt.jar的路径,然后是bin目录的路径,楼主看清楚点,你没有bin的路径,还有点分号的位置)
    .;D:\j2sdk1.4.2_04\lib\tools.jar;D:\j2sdk1.4.2_04\jre\lib\rt.jar;D:\j2sdk1.4.2_04\bin;建一个"Path",值是jdk中bin的路径
    D:\j2sdk1.4.2_04\bin;
      

  4.   

    d盘下有test目录,test目录里有a.java,
    内容如下:
    package  test;
    class a{
        public static void main(String[] args){ }
    }D:\>javac test/a.java
    输出:
    Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac/Main
      

  5.   

    以前装的jdk1.4.2_12,用的好好的,最近一段时间没有用,期间装了oracle10,今天就不能用了。
    装了jdk1.4.2_15也不行
      

  6.   

    把系统变量path中的oracle10的那段去掉就可以了
    oracle10中也有java这个命令,所以有冲突
      

  7.   

    oracle10已经卸载,还是不行,同样的问题。
      

  8.   

    package test;
    class a{
    public static void main(String[] args){ }
    }
    ===========================晕,class 前要加public,类的名字要大写,文件要保存为A.java
      

  9.   

    在命令提示符下设置classpath看看。
    set classpath=.;
    也不知道我 这样做是不是正确的。