1.4.4 运行时错误
运行时错误指在执行程序过程中发生的错误,如某个类没有实例化而造成空指针,无法找到指定的类文件等。下面介绍三种初学者常见的运行时错误。
1.无法发现类文件
在用户编译或执行Java程序时,由于种种原因可能输入了不正确的类名字,使得编译器或虚拟机无法发现该文件所在的位置。类文件名输入错误如图1.14所示。
图 1.14 类文件名输入错误
在图1.14中,笔者想运行HelloWorld程序,但是输入了错误的类名HelloWorldd,所以执行系统抛出Java.long.NoClassDefFoundError错误。
使用Java工具会启动Java虚拟机,此时系统会首先在当前目录下寻找类文件,如果没有则默认到操作系统的系统环境变量classpath中搜索。所以读者也可以在该变量中设置需要编译的类文件所在的目录。
注意 变量的设置方式可以参考第2.5节设置classpath环境变量。
2.执行Java工具时类名错误
对于初学者而言,很容易出现的一个错误是使用Java执行程序时,往往会输入类文件名如HelloWorld.class,这是不允许的,此时会抛出异常。类名输入错误如图1.15所示。
图 1.15 类名输入错误
注意
在调用Java工具执行程序时,需要在其后输入类名而不是类文件名,如输入Java HelloWorld才是正确的方式。
3.无法发现main()方法
在第1.3节已经知道,任何Java应用程序执行的类中必须有main()方法,该方法是程序的入口,通过它才可以继续调用程序所需的各种其他资源。如果在类中没有定义main()方法或该方法书写错误,都会导致图1.16所示的缺少main()方法错误。
图 1.16 缺少main()方法错误
笔者在HelloWorld.Java源程序中修改了main()方法的名字,继续编译并执行该程序,虚拟机将无法加载该类,因为无法发现类HelloWorld的程序入口。