在DOS中编译JAVA文件时提示JAVAC找不到Hello.java 命令提示符输入:Javac HelloWorld.java ...

作者&投稿:生纯 (若有异议请与网页底部的电邮联系)
2.1.3 了解JDK
接着来了解一下安装的东西有哪些。这里假设JDK与公用JRE各安装至C:\Program Files\Java\jdk1.5.0_06\及C:\Program Files\Java\jre1.5.0_06\。
公用JRE主要是为开发好的Java程序提供执行的平台。前面曾经说过,JDK本身也有自己的JRE,这个JRE位于JDK安装目录的jre目录下。以前面的安装为例,就是在C:\Program Files\Java\jdk1.5.0_06\jre中,JDK本身所附的JRE主要是开发Java程序时做测试之用。与公用JRE的主要差别在于JDK本身所附的JRE比公用JRE多了个server的VM(Virtual Machine)执行选项,如图2-5和图2-6所示。通过查看C:\Program Files\Java\jdk1.5.0_06\jre\bin与C:\Program Files\Java\jre1.5.0_06\bin就可以了解。

图2-5 JDK的JRE有server选项 图2-6 公用JRE没有server选项
server与client选项的差别在于所使用的VM不同,执行Java程序时默认会使用client VM。若使用server VM,会花比较长的启动时间及消耗较多的内存,为的是启动Java程序后可以获得较好的执行效能。初学者现阶段不用在乎启动server或client VM的差别,只要先知道有这两种VM即可。
如图2-7所示,继续来看看JDK的安装目录下有哪些东西。

图2-7 JDK安装目录的内容
bin目录
提供的是JDK的工具程序,包括javac、java、javadoc、appletviewer等程序。
demo目录
一些使用Java编写好的范例程序。
jre目录
JDK自己附带的JRE。
lib目录
工具程序实际上会使用的Java工具类(例如,javac工具程序实际上会去使用tools.jar中的com/sun/tools/javac/Main类)。
src.zip
Java提供的API类的源代码压缩文件。如果将来需要查看API的某些功能是如何实现的,可以查看这个文件中的源代码内容。
在大致了解JDK与JRE安装目录下的内容之后,这里作个总结,您到底要记得哪些东西?答案是JDK安装目录下的bin目录。因为当您编写完Java程序之后,无论是编译或执行程序,都会使用到bin目录下所提供的工具程序。

2.2 设置Path与Classpath
对于习惯图形化接口操作的初学者而言,在命令符模式下执行程序是一件陌生的事,也因此不了解Path路径设置的方法与作用,而Java执行的平台也有自己的一套路径规则来寻找编写好的Java类,也就是所谓的Classpath设置。本节将介绍如何进行这些相关的设置。
2.2.1 设置Path
在安装好JDK程序之后,在JDK安装目录(假设是C:\Program Files\Java\jdk1.5.0_06)下的bin目录中,会提供一些开发Java程序时必备的工具程序。对于Java的初学者,建议从命令符模式(在Windows 2000/XP下称之为命令提示符)下来操作这些工具程序。您可以在Windows 2000/XP的“开始”菜单中选择“运行”,输入“cmd”命令来打开命令符模式。
虽然您知道JDK的工具程序是位于bin目录下,但您的操作系统并不知道如何找到这些工具程序。所以当您输入javac尝试执行编译程序时,命令符模式下会告诉您找不到javac工具程序,如图2-8所示。

图2-8 出现这个信息表示找不到指定的工具程序
您必须告诉操作系统,应该到哪些目录下尝试找到您所想使用的工具程序。有几个方法可以进行这项设置,最简便的方法就是设置系统变量中的Path环境变量。在Windows 2000/XP下可以选择桌面上的“我的电脑”并单击鼠标右键,选择“属性”后切换至“高级”页面,并单击下方的“环境变量”按钮,在“环境变量”对话框中编辑Path变量,如图2-9所示。

图2-9 选择Path变量并单击“编辑”按钮以进行路径设置
如图2-10所示,在Path变量的“编辑系统变量”对话框中,在“变量值”文本框中先输入一个“;”,接着输入JDK bin目录的路径(这里假设是C:\Program Files\Java\jdk1.5.0_06\bin),然后单击“确定”按钮即可完成设置。

图2-10 在Path变量中加入JDK的bin目录路径
设置Path变量之后,要重新打开一个命令符模式才能重新读入Path变量内容,接着如果执行javac程序,应该可以看到图2-11所示的画面。

图2-11 若设置Path变量成功,就可以找到指定的工具程序
也可以在命令符模式下执行以下的命令,直接设置目前的环境变量,包括Path变量(这个设置在下次重新打开命令符模式时就不再有效):
set Path=%Path%;C:\Program Files\Java\jdk1.5.0_06\bin
由于以上介绍的Path设置都是寻找JDK安装目录下的bin目录,所以操作系统会搜索JDK安装目录下的工具程序。这样当执行java程序时,默认会使用JDK所附的JRE(即C:\Program Files\Java\jdk1.5.0_06\jre),而不是公用的JRE(即C:\Program Files\Java\jre1.5.0_06\)。
简单地说,操作系统会尝试在指定的Path变量中寻找指定的工具程序。当输入javac命令时,由于Path变量中有设置JDK的bin目录的路径,操作系统就可以根据这个信息来找到javac工具程序。
2.2.2 设置Classpath
Java执行环境本身就是一个平台,执行于这个平台上的程序是已编译完成的Java程序(后面会介绍到Java程序编译完成之后,会以.class文件存在)。如果将Java执行环境比喻为操作系统,如果设置Path变量是为了让操作系统找到指定的工具程序(以Windows来说就是找到.exe文件),则设置Classpath的目的就是让Java执行环境找到指定的Java程序(也就是.class文件)。
有几个方法可以设置Classpath,最简单的方法是在系统变量中新增Classpath环境变量。在图2-9中的“系统变量”下单击“新建”按钮,在“变量名”文本框中输入Classpath,在“变量值”文本框中输入Java类文件的位置。例如可以输入“.;C:\Program Files\Java\jdk1.5.0_06\lib\tools.jar; C:\Program Files\Java\jdk1.5.0_06\lib\rt.jar”(jar文件是zip压缩格式,其中包括.class文件和jar中的Classpath设置),每一路径中间必须以;作为分隔。
事实上JDK 5.0默认就会到当前工作目录(上面的.设置),以及JDK的lib目录(这里假设是C:\Program Files\Java\jdk1.5.0_06\lib)中寻找Java程序。所以如果Java程序是在这两个目录中,则不必设置Classpath变量也可以找得到,将来如果Java程序不是放置在这两个目录时,则可以按上述设置Classpath。
如果所使用的JDK工具程序具有Classpath命令选项,则可以在执行工具程序时一并指定Classpath。例如:
javac -classpath classpath1;classpath3...
其中classpath1、classpath 2是实际要指定的路径。也可以在命令符模式下执行以下的命令,直接设置目前的环境变量,包括Classpath变量(这个设置在下次重新打开命令符模式时就不再有效):
set CLASSPATH=%CLASSPATH%;classpath1;classpath3...
总而言之,设置Classpath的目的,在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序。

良葛格的话匣子:
以上介绍的是几个简单的Path与Classpath设置方式,实际上还有一些设置方式。本章最后列出了几个介绍Path、Classpath设置的网络资源链接,内容包括其他操作系统下的设置方式,您可以从中进一步了解相关的设置。

2.3 第一个Java程序
完成JDK相关环境设置之后,无论如何就先写一个简单的Java程序,以测试一下环境设置是否正确,顺便增强一些学习的信心。以下要介绍的第一个Java程序是会显示“嘿!我的第一个Java程序!”这段信息的简单程序。
2.3.1 编写和编译Java程序
在正式编写程序之前,先确定可以看得到的文件的扩展名。在Windows 2000/XP下默认是不显示文件的扩展名的,这会造成重新命名文件时的困扰。如果目前在“资源管理器”下无法看到文件的扩展名,应先执行工具栏上的“工具”|“文件夹选项”并切换至“查看”页面,取消“隐藏已知文件类型的扩展名”复选框,如图2-12所示。

图2-12 取消“隐藏已知文件类型的扩展名”复选框以显示扩展名
接着选择一个目录来编写Java源代码文件。假设该文件存储在C:\workspace目录,您要新增一个“文本文件”(也就是.txt文件),并重新命名文件为HelloJava.java。由于是将文本文件的扩展名从.txt改为.java,所以系统会询问您是否更改扩展名,应确定更改,接着双击HelloJava.java打开文件,并照着图2-13所示编写程序。

图2-13 第一个Java程序
这个程序有几点必须注意:
Java的源文件必须以扩展名 .java结束
这也就是必须让“资源管理器”显示扩展名的原因。
主文件名与类名称必须一致
Java程序的类名称是指class关键词(Keyword)后的名称。就这个例子而言,也就是HelloJava,该名称必须与HelloJava.java的主文件名(HelloJava)一致。
注意每个字母的大小写
Java程序中会区分字母的大小写,System与system对Java程序来说是不一样的名称。
空白只能是半角空格符或是Tab字符
有些初学者可能不小心输入了全角空格符,这很难检查出来。
写好程序并存盘后,接着打开一个命令符模式,并使用以下的命令切换至HelloJava.java所在的目录(在此例中是C:\workspace):
> cd C:\workspace
接着使用javac工具程序来编译.java文件,这里指定编译HelloJava.java。命令如下:
C:\workspace\javac HelloJava.java
如果编译顺利成功,则在HelloJava.java所在的目录,会出现一个HelloJava.class文件,这是已经编译完成的Java字节码(Bytecodes)文件程序。
您可能会遇到以下的几个错误,这表示您有一些地方操作有误:
error: cannot read: HelloJava.java
这表示javac工具程序找不到您指定的.java文件,请检查文件是否存在目前的目录中,或是文件名称是否有误。
HelloJava.java:1: class HelloJava is public, should be declared in a file named HellJava.java
类名称与主文件名不符,请确定主文件名与类名称是相同的。
HelloJava.java:3: cannot find symbol
程序代码中某些部分输入错了,最常发生的原因可能是没有注意到字母大小写。
javac 不是内部或外部命令、可执行的程序或批量文件
Path设置有误或没有在Path中加入JDK的bin目录,请参考2.2节的内容。
2.3.2 执行Java程序
在顺利编译出 .class的文件之后,可以使用java工具程序来执行它。执行时必须指定类名称,就以上的例子来说,也就是指定HelloJava.class这个文件的主文件名。命令执行方式如下:
C:\workspace>java HelloJava
java工具程序会根据您指定的类名称,实际加载.class的文件,以上例来说,就是载入HelloJava.class并执行,执行的结果应该是图2-14所示的画面。

图2-14 执行第一个Java程序的成功画面
您可能会遇到以下的几个错误,这表示您有一些地方操作有误:
Exception in thread"main" java.lang.NoClassDefFoundError
java工具程序找不到您所指定的类,请确定指定的类存在目前的目录中,名称是否指定正确(如果是旧版的JDK,可能必须在Classpath中加入.,表示可于目前目录中找到所指定的类)。
Exception in thread "main" java.lan.NosuchMethodError: main
没有指定Java程序的入口(Entry Point)。java工具程序指定的类必须要有一个程序入口,也就是必须包括main(String[] args)这个方法(Method),请确定您的程序中包括它,必须与图2-13所示的HelloJava.java内容一致。
在后面的章节中,如果不是要特别强调,就不再重复指出如何编译与执行Java程序。当在后面的章节中说要编译Java程序时,就是指使用javac工具程序来编译.java;而说要执行Java程序时,就是指使用java工具程序来执行指定的Java类。

这不是你的环境变量出了什么问题吧。既然你已经到这一步了。只能证明你文件名和里面的public类名不一样。java规定。必须一样。

WIN2000/XP环境配置(配置完后需要重新启动操作系统)
我的电脑->属性->高级->环境变量->系统变量
添加变量名path,变量值E:\j2sdk1.4.2_12\bin
变量名classpath,变量值.;E:\j2sdk1.4.2_12\lib

环境变量都设置正确。
得细心检查一下拼写错误了,没道理会出这号错误

cd javacode
dir 确认有 Hello.java? 而不是 Hello.java.txt??
javac Hello.java

good luck

cd javacode
javac Hello.java

用命令提示符输入javac Hello.java出现找不到文件:Hello.java~

javac找不到你的hello.java在哪儿啊。怎么编译呢?
假设你放在d盘->myjava=》Hello.java
那么你就有如下操作,cmd —》 d:
->myjava
然后再输入javac.hello

直接cmd打开
java -version
出来java版本后说明你设置的环境变量OK
初步看来是你的HelloWorld.java不在D盘的java文件中
其实如果上面步骤3OK的话你直接cmd打开,输入javac HelloWorld.java就OK了

为什么在dos中编译Hello.java文件 结果显示不是内部或外部命令也不是...
答:JAVA_HOME=C:\Program Files\Java\jdk1.7.0_79 PATH=%JAVA_HOME%\bin;CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;--- 其中:PATH属于追加内容,添加到原先内容的最前面,分号隔开。其他的都是新建内容。

Dos命令行运行Java文件出现“找不到或无法加载主类”?
答:在终端下不能带包名package,会找不到的 1. 去掉package那行,用javac编译,用java运行 2. 打成jar包,设置one.main为主类,用java -jar 运行 另外类名命名不规范哦,集成开发环境可以试试idea...很好很强大

原来在dos下运行java和javac都正常,现在运行突然出现了这个错误提示是怎...
答:初始化虚拟机时发生错误。可能有以下原因:1、安装的JDK出现问题了(删除了文件或文件夹)2、配置的环境变量不正确 建议解决办法:重新配置环境变量,如果还不行,重新安装jdk,然后再配置环境变量即可解决。

dos命令下Java-jar提示命令无效 求大神解决
答:首先jar 分可执行jar 和非可执行jar 一个可执行的 JAR 必须通过 menifest 文件的头引用它所需要的所有其他从属 JAR。如果使用了 -jar 选项,那么环境变量 CLASSPATH 和在命令行中指定的所有类路径都被 JVM 所忽略。可以参考这篇文章:http://blog.csdn.net/wingfeng19800215/article/details/2178312 ...

在dos下编译java文件
答:在dos下编译java文件用javac命令,javac是用来编译.java文件的。命令行下直接输入javac可以看到大量提示信息,提示javac命令的用法,我只知道常用的。javac-ddestdirsrcFile其中:1、-ddestdir是用来指定存放编译生成的.class文件的路径。(若此选项省略,那么默认在当前目录下生成.class文件,并且没有...

java 一个容器简单程序 为何编译时出现如下提示
答:注意:该文件名称必须为“HelloWorld.java”,大小写也区分。细心的朋友会注意到就是和public class后的名字一样的。(2)编译:在dos命令提示符下执行:(注意大小写)javac HelloWorld.java 如果正常的话,将生成HelloWorld.class文件。(3)运行:在dos命令提示符下执行:(注意大小写)java HelloWorld 这...

java编译中出现了Exception in thread “main" java.lang.UnsupportedClas...
答:出现这种情况是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行产生的错误。1、解决措施就是保证jvm(java命令)和jdk(javac命令)版本一致。如果是linux版本,则在命令行中分别输入java -version和javac -version命令来查看版本是否一致。这里假设都是1.7版本。2、如果都一致,但还是...

JDK配置成功,但是运行java时能生成class文件,但是DOS界面没有显示内容...
答:编译和运行时当然要先切换到源文件.java所在的目录才能直接运行,不然当然提示找不到文件。你的环境变量配置已经成功了,这个和环境变量没有关系哦 至于楼主说的不显示,你还没运行当然不显示,javac命令是用来编译.java文件的,会生成一个.class 的编译过的文件,然后再用java test运行 ...

在命令行编译Java文件的时候出现:“类TestCalss是公共的, 应在名为...
答:一般这个原因是公共类的类名和类文件明不一致造成的。你先确定自己公共类的类名和文件是一直。且文件中有且仅有一个pulic的class 然后放入D盘根目录再试试。

重装JDK后,在dos中运行java -version时出现Error: could not open...
答:开始我的JDK装在F盘但是后面重装的时候我改在C盘,但在dos中运行java-version时出现Error:couldnotopen`F\lib\i386\jvm.cfg。想请教下高手该怎么办... 开始我的JDK装在F盘但是后面重装的时候我改在C盘,但在dos中运行java -version时出现Error: could not open `F\lib\i386\jvm.cfg 。想请教下高手该怎么办...