WWW.LOUGH.COM.CN

加入收藏 | 设为首页 | 联系站长
首页 | Java | C&C++ | 数据库 | 经验交流
论坛首页 | 综合区 | 贴图区 | 狐朋狗友 | 学习区 | 站务区
博客首页 | IT技术 | WebServices | Hibernate | Java设计模式 | Struts | AJAX | 数据库
首页 | 中华古籍 | 网络原创 | 随记

Java初学者常会遇到的一些问题

Java初学者常会遇到的一些问题

   经常会有一些Java的初学者问我一些非常简单的问题,而这些问题在许多Java教程上只是略微提到或者    
根本就没有提到过。为了让初学者少走弯路,我把这些问题都列出来,希望初学者可以借鉴,也欢迎其他人    
补充和指正。    
下面是一个简单的例子:    
    public class Test{    
        public static void main(String[] args){    
            Test t = new Test();    
            t.showHello();    
        }    
        public void showHello(){    
            System.out.println("Hello world!");    
        }    
    }    

1、在编译的时候经常会遇到这种错误。    
G:\>javac test.java  
test.java:1: class Test is public, should be declared in a file named Test.java  
public class Test{  
       ^  
1 error  

这是因为如果把类定义为Public类型,那么文件名必须和类名是一致的,注意是区分大小写的(也就意味着一    
个文件只能有一个public类)。本例中的错误是因为大小写的问题,这类问题在Windows操作系统下经常会犯    
的错误。Windows虽然不区分大小写文件,但是它会保存你输入文件名的时候的大小写格式。    
把文件名改为Test.java,再编译就可以了。    

2、运行的时候出现以下错误    
G:\>java test    
Exception in thread "main" java.lang.NoClassDefFoundError: test    
这是因为classpath的设置不正确,把Test.class所在的目录加到classpath中,如果是在当前目录执行,那    
么只需要将"."加到classpath里就行了。    

3、运行的时候出现以下错误    
G:\>java test    
Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: Test)    
        at java.lang.ClassLoader.defineClass0(Native Method)    
        at java.lang.ClassLoader.defineClass(ClassLoader.java:502)    
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)    
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)    
        at java.net.URLClassLoader.access$100(URLClassLoader.java:54)    
        at java.net.URLClassLoader$1.run(URLClassLoader.java:193)    
        at java.security.AccessController.doPrivileged(Native Method)    
        at java.net.URLClassLoader.findClass(URLClassLoader.java:186)    
        at java.lang.ClassLoader.loadClass(ClassLoader.java:299)    
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)    
        at java.lang.ClassLoader.loadClass(ClassLoader.java:255)    
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)    
这个错误还是因为大小写敏感的问题,把test->Test就可以了。    

看看正确的输出结果:    
G:\>java Test    
Hello world!    

本例中JDK的版本:   
G:\>java -version   
java version "1.4.1_02"   
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_02-b06)   
Java HotSpot(TM) Client VM (build 1.4.1_02-b06, mixed mode)

关于我们 | 站点地图 | 免责声明 | 联系我们 | ©2003-2007 Lough.com.cn 京ICP备06060948号