写了一个TestJava.java的类文件,内容如下package com.cs.eximweb.secu.util;
import java.util.*;
public class TestJava {
public static void main(String [] args){
System.out.println("Hello");
}}
运行的时候出错:
java.lang.NoClassDefFoundError: com/util/TestJava
Exception in thread "main" JDK用的是:
C:\Program Files\Java\jdk1.5.0_11\bin环境变量:
.;C:\Program Files\Java\jdk1.5.0_11\lib\dt.jar;C:\Program Files\Java\jdk1.5.0_11\jre\lib\rt.jar;D:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\IDM Computer Solutions\UltraEdit-32我eclipse中安装的JDK是C:\Program Files\Java\jdk1.5.0_11请问问题出在哪里?

解决方案 »

  1.   

    先设置(自己建立)
    JAVA_HOME = C:\Program Files\Java\jdk1.5.0_11 
    然后把这里的东西移出来,放到名字为CLASSPATH的变量中
    classpath = .;C:\Program Files\Java\jdk1.5.0_11\lib\dt.jar;C:\Program Files\Java\jdk1.5.0_11\jre\lib\rt.jar;
    接着在path变量添加
    path = %java_home%\bin;D:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\IDM Computer Solutions\UltraEdit-32 
      

  2.   

    classpath 为设置
    classpath=.;1)转移到当前目录 在当前目录下设立com\cs\eximweb\secu\util文件件,把class文件转移到这个目录下
    2)java com.cs.eximweb.secu.util.TestJava
      

  3.   

    估计是你的包理解问题,其实包可以理解成文件夹。
    你的运行命令怎么写的??
    如果你的程序在e:盘根目录
    那么你就要建立对应文件夹E:\com\cs\eximweb\secu\util\
    将TestJava .java放到下面去进行编译
    并且执行的时候,需要在dos窗口    e:\目录下  写java com.cs.eximweb.secu.util.TestJava 
      

  4.   

    NoClassDefFound:  
      当 Java 虚拟机或 ClassLoader 实例试图在类的定义中加载(作为通常方法调用的一部分或者作为使用new 表达式创建的新实例的一部分),但无法找到该类的定义时,抛出此异常。 问题出在你环境变量设置错误:
    上述楼主把C:\Program Files\Java\jdk1.5.0_11\lib\dt.jar;C:\Program Files\Java\jdk1.5.0_11\jre\lib\rt.jar放在classpath的环境变量中是正确的,但楼主没有把C:\Program Files\Java\jdk1.5.0_11\bin 路径添加到path路径中,添加到里面就能运行了上面朋友说的设置javahome这一环境变量,楼主也可以不用设置
      

  5.   

    下面就是把我博客里的设置classpth,path,java_home环境变量的目的解释一下:
    以下为置JAVA_HOME,CLASSPATH,PATH的目的:
    1,设置JAVA_HOME: 
        一、为了方便引用,比如,你JDK安装在C:\Program Files\Java\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串; 
        二、归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃! 
        三、第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件, 以后用JAVA久了就会知道, 要是某个软件不能正常使用, 不妨想想是不是这个问题. 2,设置CLASSPATH: 
           这是一个很有趣,当然也比较折磨初学者的问题, 这个变量设置的目的是为了程序能找到相应的".class"文件, 不妨举个例子: 你编译一个JAVA程序---A.java, 会得到一个A.class的类文件,你在当前目录下执行java A, 将会得到相应的结果(前提是你已经设置CLASSPATH为"."). 现在, 你把A.class移到别的目录下(例如:"e:\"), 执行java A, 将会有NoClassDefFindError的异常,原因就是找不到.class文件, 现在你把CLASSPATH增加为:".;e:\"再运行java A, 看看会有什么结果~~:)~~~, 一切正常, java命令通过CLASSPATH找到了.class文件! 3,设置PATH: 
           道理很简单, 你想在任何时候都使用%JAVA_HOME%\bin\java 等来执行java命令吗, 当然不会, 于是, 你可以选择把 %JAVA_HOME%\bin添加到PATH路径下, 这样, 我们在任何路径下就可以仅用java来执行命令了.(当你在命令提示符窗口输入你个代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序, 并且执行.) 
      

  6.   

    楼主要是有时间可以到我的博客看一下这篇“环境变量的设置和对path , classpth ,java_home设置作用和目的的讲解 ”文章,路径:http://blog.csdn.net/yinyuan1987/archive/2008/10/19/3099631.aspx和常见的两种异常方式:NoClassDefFound,ClassNotFound的出现原因的讲解:
    文章标题:“对两种web开发中经常出现的异常问题的总结(NoClassDefFound,ClassNotFound) ”
    路径:http://blog.csdn.net/yinyuan1987/archive/2008/10/17/3090262.aspx应该对楼主很有用
      

  7.   

    这种情况有俩种可能
    第一,环境变量的设置出错。按照上面几位的方法设置,并将编译出来的.class文件放置到你所设置的CLASSPATH目录下执行,如果你安装了如eclipse等IDE这种情况将不会出现,但不建议初学者就是用IDE,最好自己用命令行编译。
    第二,可能是对于包的理解错误 ,建议先了解绝对路径和相对路径。
      

  8.   

    运行的 " 环境变量 " 没设好!在" 运行 "输入"CMD",再在显示的窗口下输入"path=.之前的环境变量;你装JDK的位置"问题解决!!!!!!!
      

  9.   

    当在eclipse里运行出错无法判断错误时,可以尝试使用命令提示窗来操作查看一下,问题出在哪里啦?
    而且,貌似楼主的的路径设置得有点问题吧,设置classpath路径的时候,在原有路径后加上英文的“;.”,利用通配符,就可以在所有的目录下面编译.java文件啦……
      

  10.   

    package com.cs.eximweb.secu.util;!!!
    该文件必须在这个目录结构下
    com/cs/eximweb/secu/util
      

  11.   

    就是package的定义出了问题,最简单的处理,把package一行消了
      

  12.   

    LZ 刚开始的时候 要多调试。Just Try!
      

  13.   

    你的package定义有问题,请改下package符合你的那个异常中的路径就行拉。
      

  14.   

    估计是你的包理解问题,其实包可以理解成文件夹。 
    你的运行命令怎么写的?? 
    如果你的程序在e:盘根目录 
    那么你就要建立对应文件夹E:\com\cs\eximweb\secu\util\ 
    将TestJava .java放到下面去进行编译 
    并且执行的时候,需要在dos窗口    e:\目录下  写java com.cs.eximweb.secu.util.TestJava 
      

  15.   

    package com.cs.eximweb.secu.util; 
    import java.util.*; 
    public class TestJava { 
    public static void main(String [] args){ 
    System.out.println("Hello"); 
    } } 
    如果你编写的代码是在 D:\workjava 下的TestJava下,那么你的这个TestJava文件在编译后就应该在 D:\workjava\com\cs\eximweb\secu\util这个路径的的util文件中就应该有TestJava.class 字节码文件。
    详细的编译步骤如下:
    1)编译:javac -d TestJava.java  /*这步用了-d 这个参数你就不用在一步一步创建com\cs\eximweb\secu\util这下文件下路径了*/
    2)运行: java com.cs.eximweb.secu.util.TestJava  /*记得用了包,那么包名也是你声明的这个类的名字的一部分,所以在 java 后要写全包名(你这个程序的完整包名就是 :com.cs.eximweb.secu.util.TestJava )*/我建议你去下载 孙鑫 关于java无难事的视频看看,就明白了,哪里介绍java很不错的。www.sunxin.org
      

  16.   

    很抱歉,在我回答上面的问题时,
    在1)编译这里的 应该是 javac -d . TestJava.java  (这个 “.”不能少的,表示在当前目录下生成包)
      

  17.   

    我的JAVA源程序(是在记事本上编的)在DOS系统下可以编译成功  但是运行不能成功出现Exception in thread "main" java.lang.NoClassDefFoundError:hello但是我把我把编译出来的CLACC文件托在别的机器上运行可以成功!!
    请问 我改怎么办?
      

  18.   

    应该是这句package com.cs.eximweb.secu.util; 的问题
      

  19.   

    先在eclipse开发平台练习一下,尽可能利用好的开发平台.
      

  20.   

    classpath 为设置 
    classpath=.; 1)转移到当前目录 在当前目录下设立com\cs\eximweb\secu\util文件件,把class文件转移到这个目录下 
    2)java com.cs.eximweb.secu.util.TestJava 
      

  21.   

    http://topic.csdn.net/t/20060402/15/4657343.html
    去这里看看吧
      

  22.   

    可能有以下几种:
    1.修改了代码没有保存。
    2.建议把路径修改为c:\jdk6.0这样用起来方便。dos里面空格会带来麻烦,例如program flies间的空格。
    3.看看你在哪个盘里有代码,例如d:\java里写着代码,就把classpath加上d:\java 改为classpath=   ;d:\java还可以再加上;d:\java;.后边再加一个点.
      

  23.   

    如果你是用cmd编译来编译.java文件的话,去掉package com.cs.eximweb.secu.util; 就ok了~
    我以前也出现过这种问题的~
      

  24.   

    1.首先要先配置环境变量(path,classpath)
    2.然后再cmd中进入java文件所在的目录(这个目录要跟classpath一致)然后编译这个java文件
    3.此时会生成.class文件,将这个.class文件copy到你程序中package(假设是com.test)的那个目录中.或者你可以直接敲javac -d . 文件名.java这样的话你不要手动复制.class文件,jvm会自动帮你搞定.
    4.然后运行,运行时的文件名应该包含包名(com.test.文件名)
      

  25.   

    你的问题应该是配置Windows的环境年变量path与classpath
    这是一个在安装Java时出现的错误
      

  26.   

    你的包可真够深的,先练习没有包的,在加上包练习。你的import java.util.*; 有什么用?用不到的包不要导入,多麻烦
      

  27.   

    LZ 你好像忘记引用 java.io.*了
    import java.io.*;
      

  28.   

    1.JAVA_HOMEJAVA_HOME指向的是JDK的安装路径,在我的机器上它是:C:\Program Files\Java\jdk1.6.02.PATHPATH=%JAVA_HOME%\binPATH环境变量原来Windows里面就有,你只需修改一下,使他指向JDK的bin目录,这样你在控制台下面编译、执行程序时就不需要再键入一大串路径了。设置方法是保留原来的PATH的内容,并在其中加上%JAVA_HOME%\bin (注,如果你对DOS批处理不了解,你可能不明白%%引起来的内容是什么意思;其实这里是引用上一步设定好的环境变量JAVA_HOME,你写成C:\Program Files\Java\jdk1.6.0也是可以的;你可以打开一个控制台窗口,输入echo %JAVA_HOME%来看一下你的设置结果)3.CLASSPATHCLASSPATH=.;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\ext\dnsns.jar;%JAVA_HOME%\jre\lib\ext\localedata.jar;%JAVA_HOME%\jre\lib\ext\sunjce_provider.jar;%JAVA_HOME%\jre\lib\ext\sunmscapi.jar;%JAVA_HOME%\jre\lib\ext\sunpkcs11.jar详细参见:http://hi.baidu.com/istry/blog/item/011bfbef26ad8530adafd505.html
      

  29.   

    你的package com.cs.eximweb.secu.util有问题,一个点就是一级文件夹
      

  30.   

    先配置PATH,在DOS下运行下JAVA看看   是否正常   然后在配置自己的CLASSpath   最好在网上找点JDK配置的视频看看很简单的
      

  31.   

    package com.cs.eximweb.secu.util; 

    运行的时候出错: 
    java.lang.NoClassDefFoundError: com/util/TestJava 
    Exception in thread "main" 
    包的问题:你的类编译后应该为 com/cs/eximweb/secu/util/TestJava你运行的路径为 com/util/TestJava当然找不到类