java文件在cmd下编译通过但不能执行
环境变量设置正确,类文件名和生成的文件名相同,大小写也没问题,javac命令后可以产生相对应的类,但就是不能执行,用java命令去执行的时候显示:Exception in thread "main"java.long.NoClassDefFoundError --------------------编程问答-------------------- 编译通过了不一定能执行,lz看看有没有public static void main(String args[])函数的实现。 --------------------编程问答-------------------- java xxx
注意没有后缀class,大小写正确 --------------------编程问答-------------------- main方法应该这样写public static void main(String args[]){} --------------------编程问答-------------------- 是你的main 函数问题把
main"java.long.NoClassDefFoundError --------------------编程问答-------------------- public static void main(String args[]){}主函数问题 --------------------编程问答-------------------- 看看classpath里面是不是写了.; --------------------编程问答-------------------- public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
这个是我的程序 --------------------编程问答-------------------- 我用的是jdk1.6.0_13,是不是和vista不兼容啊?
--------------------编程问答-------------------- classpath不用设置,
cd来到你的目录
javac HelloWorld.java
java HelloWorld --------------------编程问答-------------------- 不行啊 --------------------编程问答-------------------- 是不是有冲突啊
还有没有别的啊
--------------------编程问答-------------------- 你先用java -version 看下版本对不对, 是不是你安装的。 --------------------编程问答-------------------- 可以编译就说明环境配置没错!
如果程序里的类是公共的,文件名必须和类名相同!
如果不是公共的就不一定要相同! --------------------编程问答-------------------- 不知道从JDK1.5之后SUN公司是怎么考虑问题的,他们对编译进行了一些修改,你在编译时必须加上-d参数。即要象下面这样写。
javac -d c:\ HelloWorld.java
注意:-d c:\是指将生成的带包(package)class文件放到c:\
注意: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设置了的问题
我上次也一样,把classpath去掉就ok了 --------------------编程问答-------------------- 如果你是将源文件与编绎后的文件保存在不同的文件夹下,你可以看一下是否你的classpath是否设置正确 --------------------编程问答-------------------- 可能前面有朋友提到了,是不是classpath的配置没设置好,路径最前面要有.; --------------------编程问答-------------------- [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 --------------------编程问答-------------------- 你的类中,有没有package的字样呀,如果是包的问题,那你可真的没有活啦! --------------------编程问答-------------------- 可能两个地方
1、你这个程序文件名必须为HelloWorld.java
2、有没有加包,package,如果加了运行时必须加上包名.类名 --------------------编程问答-------------------- 应该在classpath里添加.Class文件所在的文件目录。
比如:你的.CLASS文件在D:\h目录下。则应该在classpath里添加D:\h --------------------编程问答-------------------- java -classpath .; XXXX.jar xx.xx.Main --------------------编程问答-------------------- unix下可以实现一次编译 到处运行的可能
我想楼主的环境变量还是要重新考虑设置的,如果生成class,java xxx我想是可以找得到class执行的; --------------------编程问答-------------------- 看看你的环境变量 是不是有CLSSSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; --------------------编程问答-------------------- 重新配置环境变量 重新编译 执行 --------------------编程问答-------------------- 应该和环境变量的设置有什么关系吧
补充:Java , Java SE