Chinaunix首页 | 论坛 | 博客
  • 博客访问: 531563
  • 博文数量: 16
  • 博客积分: 4960
  • 博客等级: 上校
  • 技术积分: 1950
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-07 19:20
文章分类

全部博文(16)

文章存档

2011年(1)

2008年(15)

我的朋友

分类: Java

2008-05-05 10:55:17

前两天帮同学配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) |
给主人留下些什么吧!~~