又是java环境变量的问题。。。我都无语了
JAVA_HOME:C:\Program Files\Java\jdk1.6.0_10
PATH:%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin
CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%java_home%\jre\lib\rt.jar
helloworld.java:
public class helloworld{
public static void main(String[] args){
System.out.println("Hello World! Juhen!");
}
}
我把helloworld.java放到C:\Program Files\Java\jdk1.6.0_10目录下,命令行的当前路径也是C:\Program Files\Java\jdk1.6.0_10
-version没问题,javac也没问题,可是一运行java编译,就抛出异常:
Exception in thread "main"
java.lang.NoClassDefFoundError:helloword/java
Caused by:...
...
Could not find the main class:helloworld.java. Program will exit.
究竟要怎样改啊?!!(不能啥事儿都让eclipse弄吧,但自己玩儿java怎就那么费劲呢。。。。)
求个妥儿妥儿的保险解决办法!谢谢大!
------解决方案--------------------不用把helloworld.java放到C:\Program Files\Java\jdk1.6.0_10目录下 随便放一个地方就行
比如d:/下
在dos下打开 d:
javac hello.java
java hello
------解决方案--------------------是 java hellworld
不是java hellworld.java
楼主你是这个问题吧。
------解决方案--------------------第一步,检查 类名与文件名是否相同
文件名:java语法固定"public修饰的类的名称必须与java文件同名!包括大 小写"
比如 public class HelloWorld{ .....
那么文件名一定只能是HelloWorld.java,看仔细了!
第二步,检查main方法的四要素
1,修饰符 public static ;2,返回值类型 void; 3,main 关键字;4,参数列表String args []
main方法做为java应用程序的入口,.java骨架中四要素缺一不可,
main方法的声明应该是这样子的:
public static void main(String[] args)
第三步,javac后面跟的参数是文件名,但java 后面跟的是类名!
这是我开始学JAVA是犯的错,java HelloWorld.class,然后就报错。后来才弄明白,应该是java HelloWorld。
我犯的就是这个错误,自己先是看了环境变量的配置和其他的设置都是正确,就是报这个错误,最终发现原来java 后面跟的应该是类名,而不是文件名
第四步,检查设置classpath
不仅是在安装JDK时要设置的内容,一般来说最好还要自己设置一个目录来存放自己的类文件的。比如d:/class目录。
设置classpath=%classpath%;d:/class
那么,现在将HelloWorld.class文件COPY到d:/class目录下,再java HelloWorld应该就OK了。
第五步,结合第3点和第4点
如果你的类是属于某一个包的,比如这样一个类sony.test.HelloWorld,那么按照我在第4点中说的目录来说,就应该将HelloWorld.class文件存放到d:/class/sony/test/目录下。
执行的时候应该参考第3点中说的,按类名执行:java sony.test.HelloWorld。
------解决方案--------------------lz 编译是 javac helloworld.java
运行是 java helloworld --运行的是你编译好的class 文件,并不是带.java的源文件,这个要搞清楚
lz 首先要明白 设置path 跟 classpath的含义
在命令行下随便执行java的一个命令,比如说:javac xxx.java 或者是 java xxx等等 系统首先在当前目录下寻找此命令,如果当前目录下没有会去你设置的path环境变量所指定的那些目录挨个寻找,找到就运行,找不到肯定要报错.
classpath 也是一样的,是指定java虚拟机从哪个目录来加载你所运行的classes文件.先从命令行的当前目录下查找,有就执行,如果当前目录下没有,就去classpath指定的目录去查找。如果还没有就会报Exception in thread "main" java.lang.
NoClassDefFoundError