前两天帮同学配jdk,n种方法都没有成功,始终提示:Exception in thread "main" java.lang.NoSuchMethodError:main 最后问的牛人一句话搞定了……
记录下来以备以后使用。
牛人的一句话:
Path 添加上bin目录,CLASSPATH指向LIB目录。
另外补充一下,如果修改后感觉配置没有错误了,却始终不能正常运行,那就reset一下。
我就遇到了这个状况,郁闷死了!结果reset一下就ok了。
出现错误的情况:
* 错误1:javac 不是内部或外部命令,也不是可运行的程序或批处理文件。(javac: Command not found)
产生的原因是没有设置好环境变量path。
Win98下在autoexce.bat中加入path=%path%;c:\jdk1.2\bin,Win2000下则控制面板->系统->高级->环境变量->系统变量...看到了?
双击Path,在后面加上c:\jdk1.2\bin。
再试试!javac HelloWorld
* 错误2:HelloWorld is an invalid option or argument.
拜托,给点专业精神,java的源程序是一定要存成.java文件的,而且编译时要写全.java呀。
OK,javac HelloWorld.java
* 错误3:HelloWorld.java:1: Public class helloworld must be defined in a file called "HelloWorld.java".
这个问题,是因为你的类的名字与文件的名字不一致。一个Java源程序中可以定义多个类,但是,具有public属性的类只能有一个,而且要与文件名相一致。还有,main方法一定要放在这个public的类之中,这样才能java(运行)这个类。另外一点是Java语言里面是严格区分大小写的。像上例中helloworld与HelloWorld是不一样。
* 错误4:Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
这个就是著名的类路径(classpath)问题啦。实际上,类路径是在编译过程就涉及的Java中的概念。classpath就是指明去哪里找用到的类。由于我们的HelloWorld没用到其它的(非java.lang包中的)类,所以编译时没遇到这个问题。运行时,就要指明你的类在哪里了。
解决方法,可以用下面的命令运行:java -classpath . HelloWorld
“.”就代表当前目录。当然这样做有点麻烦(是“太麻烦”!),我们可以在环境变量 中设置默认的classpath。方法就照上述设置path那样。将classpath设为:classpath=.;c:\jdk1.2\lib\dt.jar;c:\jdk1.2\lib\tools.jar
后面的两个建议也设上,以后开发用的着。
java -classpath . HelloWorld
* 错误5:Exception in thread "main" java.lang.NoSuchMethodError:main
问题出在main方法的定义上,写对地方了吗?是这样写的吗:public static void main(String args[])
附:
HelloWorld.java // HelloWorld.java public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!") ; } }
阅读(1332) | 评论(0) | 转发(0) |