一些初学者在用java HelloWorld指令运行程序的时候出现:
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
或者在编译javac HelloWorld.java程序的时候会看到如下错误提示:
javac: 无效的标记: HelloWorld.class 用法: javac <options> <source files> -help 用于列出
出现这样的错误,主要是因为环境变量配置错误引起的。
(一)首先,编译是出现的错误提示,意思是找不到HelloWorld.class文件,此时需要注意检查:
1. 编译时所在的路径与HelloWorld.java程序路径是否在同一个目录下。如果当前工作目录是C:\,而程序放在C:\Test目录下,就会出现此错误。
2. 检查指令中指定的HelloWorld.java文件名称与类名称是否一致。
3.如果在C:\目录下使用指令:javac HelloWorld.java编译C:\Test\HelloWorld.java代码,就需要指定HelloWorld.java的全路径。即:javac C:\Test\HelloWorld.java。
(二)对于运行java HelloWorld出现的错误,主要是没有将当前目录配置到CLASSPATH环境变量里面去(具体配置方法请自行百度)。
如果想像编译那样,java C:\Test\HelloWorld,即命令里指定HelloWorld.java全路径,即使当前目录是C:\Test\也会照样出错。明明C:\Test\HelloWorld是一个.class文件(假设已经正确编译后生成了HelloWorld.class文件),为什么就找不到呢?原来,Java对待.java文件与.class文件是有区别的。对.java文件可以直接指定路径给它,而java命令所需的.class文件不能出现扩展名,也不能指定额外的路径给它。
那么,如何指定路径呢?对于Java所需的.class文件,必须通过classpath来指定。在CLASSPATH环境变量中添加一个点号(即:.)就表示将当前路径配置到CLASSPATH中了。
(三)有关java的环境变量解释
1. PATH环境变量。作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。
2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPATH来寻找类的.class文件。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
javac -c 路径 (可以指定class文件存放目录)
java -cp 路径 (可以指定要执行的class目录,如java -cp C:\Test HelloWorld)
3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。
希望对初学者有帮助。
1. PATH环境变量。作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。
2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPATH来寻找类的.class文件。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
javac -c 路径 (可以指定class文件存放目录)
java -cp 路径 (可以指定要执行的class目录)
3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。