2.5 常见疑难解答

2.5.1 Java文件扩展名是否区分大小写

如果用记事本写了一个很短的程序,如下所示:

01        //定义一个FirstJava类
02        public class FirstJava{
03                  //程序执行的入口,每个Java应用程序都有一个main()函数
04            public static void main(String args[]){                           //主方法
05                    //在DOS窗口打印一行字符串:Hello Java!!!
06                System.out.println(“Hello!!!”);
07                }
08        }

将这个文件保存在D盘根目录下,名字为Hello.Java,那么在DOS中的D盘根目录下执行javac命令,根本就不会编译这个文件。将扩展名改为小写的Hello.java,则再执行javac命令,就可以编译通过了。所以说Java文件的扩展名区分大小写。

2.5.2 Javac xxx.java顺利通过,但Java xxx显示“NoClassDefFoundError”

Java命令在一定的范围(ClassPath)内搜索要用的class文件,但是未能找到。遇到这类问题,首先请确认没有错误地输入成java xxx.class;其次,检查ClassPath环境变量,如果设置的该变量没有包含“.”(代表当前目录),就会遇到这个问题,处理的方法就是在ClassPath环境变量中加入Java命令的当前目录这一项。

2.5.3 导致错误“Exception in thread main java.lang.NoSuchMethodError:main”的原因

首先,在程序中每个Java文件有且只能有一个public类,这个类的类名必须与文件名的大小写完全一样;其次,在要运行的类中,有且只能有一个“public static void main(String[]args)”方法,这个方法就是主运行程序。

根据上面的这种Java结构,当遇到Path问题时,操作系统会在一定的范围(Path)内搜索javac.exe。如果没有找到,那么编辑操作系统环境变量,新增一个“JAVA_HOME”变量,设为JDK的安装目录,再编辑Path变量,加上一项“%JAVA_HOME%\bin”,然后关闭当前DOS窗口,再新开一个DOS窗口,就可以使用Javac和Java命令了。