写了一个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请问问题出在哪里?
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请问问题出在哪里?
解决方案 »
- 很简单的序列化程序,抛出io.EOFException 异常
- 算法:寻找没有放入到数组中的数
- 关于JAVA环境变量的一点疑惑
- 关于DateFormat的问题,请教!在现等待,立等结贴!
- 在文件特定位置写入内容,怎么处理~?
- 请问一下在JBUILD中新建一个工程后再新建一个JSP文件,为什么编译就会出错?
- 请问 继承时 内存的分配情况?
- 如何保证session里的属性值在不同的端口跳转时不丢失?
- 类的设计问题
- 谁能搞定最头痛的问题或给点建议:JBuilder6的大BUG——按文件名顺序编译,经常找不到文件名靠后的类
- java中的架构问题
- 急求啊!!如何结合GUI、JDBC和网络知识与技术,设计一个在线群聊系统
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
classpath=.;1)转移到当前目录 在当前目录下设立com\cs\eximweb\secu\util文件件,把class文件转移到这个目录下
2)java com.cs.eximweb.secu.util.TestJava
你的运行命令怎么写的??
如果你的程序在e:盘根目录
那么你就要建立对应文件夹E:\com\cs\eximweb\secu\util\
将TestJava .java放到下面去进行编译
并且执行的时候,需要在dos窗口 e:\目录下 写java com.cs.eximweb.secu.util.TestJava
当 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这一环境变量,楼主也可以不用设置
以下为置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变量目录里查找相应的应用程序, 并且执行.)
文章标题:“对两种web开发中经常出现的异常问题的总结(NoClassDefFound,ClassNotFound) ”
路径:http://blog.csdn.net/yinyuan1987/archive/2008/10/17/3090262.aspx应该对楼主很有用
第一,环境变量的设置出错。按照上面几位的方法设置,并将编译出来的.class文件放置到你所设置的CLASSPATH目录下执行,如果你安装了如eclipse等IDE这种情况将不会出现,但不建议初学者就是用IDE,最好自己用命令行编译。
第二,可能是对于包的理解错误 ,建议先了解绝对路径和相对路径。
而且,貌似楼主的的路径设置得有点问题吧,设置classpath路径的时候,在原有路径后加上英文的“;.”,利用通配符,就可以在所有的目录下面编译.java文件啦……
该文件必须在这个目录结构下
com/cs/eximweb/secu/util
你的运行命令怎么写的??
如果你的程序在e:盘根目录
那么你就要建立对应文件夹E:\com\cs\eximweb\secu\util\
将TestJava .java放到下面去进行编译
并且执行的时候,需要在dos窗口 e:\目录下 写java com.cs.eximweb.secu.util.TestJava
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
在1)编译这里的 应该是 javac -d . TestJava.java (这个 “.”不能少的,表示在当前目录下生成包)
请问 我改怎么办?
classpath=.; 1)转移到当前目录 在当前目录下设立com\cs\eximweb\secu\util文件件,把class文件转移到这个目录下
2)java com.cs.eximweb.secu.util.TestJava
去这里看看吧
1.修改了代码没有保存。
2.建议把路径修改为c:\jdk6.0这样用起来方便。dos里面空格会带来麻烦,例如program flies间的空格。
3.看看你在哪个盘里有代码,例如d:\java里写着代码,就把classpath加上d:\java 改为classpath= ;d:\java还可以再加上;d:\java;.后边再加一个点.
我以前也出现过这种问题的~
2.然后再cmd中进入java文件所在的目录(这个目录要跟classpath一致)然后编译这个java文件
3.此时会生成.class文件,将这个.class文件copy到你程序中package(假设是com.test)的那个目录中.或者你可以直接敲javac -d . 文件名.java这样的话你不要手动复制.class文件,jvm会自动帮你搞定.
4.然后运行,运行时的文件名应该包含包名(com.test.文件名)
这是一个在安装Java时出现的错误
import java.io.*;
}
运行的时候出错:
java.lang.NoClassDefFoundError: com/util/TestJava
Exception in thread "main"
包的问题:你的类编译后应该为 com/cs/eximweb/secu/util/TestJava你运行的路径为 com/util/TestJava当然找不到类