[code=BatchFile]@ECHO OFF set JAVA_HOME="C:\Program Files\Java\jdk1.6.0_05" set classpath=.\bin;%classpath% set path=.;%JAVA_HOME%\bin;%path% set JAVA_CMD="C:\Program Files\Java\jdk1.6.0_05\bin\java" %JAVA_CMD% -ea:com.test.scjp.TestAssert com.zhigang.scjp.TestAssert file1 pause[/code] write a batch file to run your java classes file
注意没有后缀class,大小写正确
main"java.long.NoClassDefFoundError
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
这个是我的程序
cd来到你的目录
javac HelloWorld.java
java HelloWorld
注意:c:\与HelloWorld.java之间有一个空格。执行的时候要在C:\下面输入下面的命令:
java HelloWorld你试试。
Exception in thread "main"java.long.NoClassDefFoundError翻译过来的意思是“在主线程存在一个异常:无类定义发现错”
其中的"main"是要和前面的thread联系起来的,并不是没有发现main函数,而是翻译成“主线程”。
无类定义发现错误通常都是你要执行的那个类的路径没有写对。通常我们都是写的相对路径,很容易找错位置。再加上自从JDK1.5版本之后,更出现了奇怪的现象。假设在C;\下有一个Java文件:Hello.java。内容如下:package aaa;
public class Hello{
public static void main(String[] args){
System.out.println("Hello!!!!");
}
}当你在cmd下面输入:
c:\>javac Hello.java你会发现,class文件已经生成,但是一个裸class(即只有一个class,而不是有一个aaa包,里面装着class)。在JDK1.4时,包aaa是会被生成的。这时如果你想再执行这个Hello.class是不行的,因为没有aaa包,所以怎么输路径都不对,总会报楼主说的那个错误。
如果你使用了-d参数,指定编译生成文件的位置,象下面这样:
c:\>javac -d c:\ Hello.java你会发现,有aaa包,点进去后里面有Hello.class,而这时你只要输入:
c:\>java Hello
Hello!!!!哈哈,执行成功啦!!!注意你的java Hello命令要在C盘根目录下面执行!否则相对路径不对,仍然会报“无类定义发现错”
我上次也一样,把classpath去掉就ok了
set JAVA_HOME="C:\Program Files\Java\jdk1.6.0_05"
set classpath=.\bin;%classpath%
set path=.;%JAVA_HOME%\bin;%path%
set JAVA_CMD="C:\Program Files\Java\jdk1.6.0_05\bin\java"
%JAVA_CMD% -ea:com.test.scjp.TestAssert com.zhigang.scjp.TestAssert file1
pause[/code]
write a batch file to run your java classes file
1、你这个程序文件名必须为HelloWorld.java
2、有没有加包,package,如果加了运行时必须加上包名.类名
比如:你的.CLASS文件在D:\h目录下。则应该在classpath里添加D:\h
我想楼主的环境变量还是要重新考虑设置的,如果生成class,java xxx我想是可以找得到class执行的;