在Windows命令提示符中,Javac无法工作

5

在Windows命令提示符中javac无法工作

^ 我尝试了这篇文章中的建议,它有些有用,但并不完全解决问题。

我打开了命令提示符,并在设置环境变量后输入了“javac”,但没有起作用。然后我搜索到了那个帖子。

我知道我已经关闭并重新打开了cmd,但那并没有解决问题,所以我跳过了那一部分,并看到了要确保javac.exe存在的部分,我通过cmd中的“dir”命令验证了它的存在。之后,在命令提示符上进入了“C:\ Program Files \ Java \ jdk1.7.0_25 \ bin”文件夹,我输入了下一条建议:

for %i in (javac.exe) do @echo %~$PATH:i

在我的命令提示符中输入这个后,我得到了消息“ECHO is on”。看到这个,我再次输入“javac”,这一次它奏效了。于是我决定通过退出目录并进入一个我保存有.java文件的文件夹并运行它来测试它,但它又告诉我
'javac' is not recognized as an internal or external command, operable program or batch file.

这很令人失望。我认为只有在命令提示符内部的bin文件夹中才能工作,这很烦人,因为我不是这台计算机上的管理员,总是需要从我的父母那里获取管理员权限来编写代码。他们也永远不会给我密码。有人可以帮帮我吗?提前感谢!非常抱歉给大家带来一堵长长的文字墙...

编辑:有人问“echo%path%”的输出结果是什么。它是这样的:

C:\Windows\system32;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\

这不应该这样说吗?

编辑2:@brano88... 我想我这样做了吗?我右键点击计算机,进入属性,然后进入高级系统设置,点击环境变量,然后去到顶部并按“新建...”在那里,我输入了变量名称为Path,变量值为bin文件夹的位置。这样正确吗?我一边按照YouTube教程一步一步操作。

这个教程:http://www.youtube.com/watch?v=Hl-zzrqQoSE


不带引号的“echo %path%”的输出是什么? - Owen Delahoy
1
很明显:您没有将JDK(“C:\ Program Files \ Java \ jdk1.7.0_25 \ bin”)分配给PATH。 - Branislav Lazic
如果您正确地按照那个视频操作,我相信您应该能够使用javac,但是您肯定没有将其位置添加到路径中。也许再次跟随视频进行操作,确保您没有遗漏任何步骤或者做错了什么。 - Owen Delahoy
5个回答

11

如何在命令提示符下运行 .java 文件

  1. 进入电脑 -> C: -> Program Files -> Java -> jdk1.7.0_25-bin
  2. 复制路径 (例如: C:\Program Files (x86)\Java\jdk1.7.0_25\bin)
  3. 进入控制面板 -> 系统和安全 -> 系统-高级系统设置 -> 高级 -> 环境变量
  4. 打开环境变量屏幕并转到系统变量,查找 "Path"
  5. 找到 Path 系统变量后,双击或按编辑按钮,在变量值中粘贴从 Java 中刚刚复制的路径,粘贴在已经存在的最后一个值之后。
  6. 注意!
    • 确保您不要在此字段中输入任何额外的空格,否则它将无法工作;
    • 确保您在粘贴路径之前有一个分号,例如:Path:...% ANT_HOME%\bin;C:\Program Files (x86)\Java\jdk1.7.0_25\bin
  7. 注意!如果之前尝试在 CMD 中编译 .java 文件,请关闭该 CMD 并再次打开,因为所做的更改只能在新的 CMD 实例中生效
  8. 转到文件.java 的位置,例如:E:\Projects,右键单击文件夹内按住 Shift 按钮并在窗口中的选项中选择:在此处打开命令窗口
  9. 另一种解决方案是正常打开 CMD 并使用: cd 命令更改目录,直到您到达文件夹所在的目录
  10. 打开 CMD 窗口后,键入:javac HelloWorld.java
  11. 注意!确保您在 file.java 中编写的类名与文件名相同。例如,您的文件名应为:HelloWorld.java,而该文件中的类也必须是:

    class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); // Display the string. } }

否则,它将无法编译!
如果没有显示错误消息,路径再次出现在CMD中,并且当然如果HelloWorld.class文件现在出现在目录中,则成功。要检查,请键入dir命令,它将显示包含您当前目录的内容。
12.最后运行文件,请在CMD中键入:java HelloWorld
13.注意,运行文件时不需要扩展名(您已经运行的文件已经具有.class扩展名)
这就是它对我起作用的方式!如果有什么不对的地方,请告诉我!谢谢!

1
对于没有管理员权限的初学者程序员,我建议使用Eclipse IDE。由于您已经安装了JDK,所以唯一需要的安装步骤不需要管理员权限。从这里下载"Eclipse Standard"选项,您将得到一个非常大的zip文件。您可以将其解压到桌面或我的文档中。Windows自带一个实用程序,可以通过资源管理器的拖放操作进行解压缩,或者您的计算机可能安装了其他程序(如WinRAR)来完成此操作。
然后,您可以通过浏览到并双击该文件来从提取位置运行eclipse.exe
该IDE非常强大且简单易懂。您可以创建项目、运行和调试代码,非常适合初学者。它值得花费长时间下载。

这个问题与Eclipse无关。 - Branislav Lazic
1
@brano88 我正在回答问题的根本问题。OP想要在没有管理员权限的情况下使用Java,而Eclipse是一个可行的选择,因为它可以根据需要获取CP Jars。 - nanofarad

1
首先,是的,您已将JDK添加到PATH中。但您没有正确地执行此操作。您已经将这些变量添加到了PATH中:C:\Windows\system32;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\ 要添加JDK,请在添加之前加上分号,因为您已将多个路径分配给PATH变量。因此,应该像这样做: C:\Windows\system32;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.7.0_25\bin

我在原始路径值的C前面添加了一个分号,但是没有起作用。然后我复制了你那里的内容,并将其作为变量值放入,但也没有起作用。 - Fuzail Gilani
尝试在JDK路径后添加分号。这是我能想到的最后一件事情。 - Branislav Lazic
那也不行。我尝试使用这个命令:set path:"%path%;C:\Program Files\Java\jdk1.7.0_25\bin\"以及将整个东西放在路径到bin的地方,但是这给了我以下消息:环境变量路径:"C:\Windows\system32;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.7.0_25\bin"未定义 - Fuzail Gilani
好的,我做到了!我使用了设置路径的方法,只是这样做:set Path=xxxx而不是之前我所做的那个 %path% 的东西。现在它可以工作了,谢谢大家的帮助 :) - Fuzail Gilani

1
在我的情况下,javac无法工作,只是因为在将路径指定为path变量中,在给前一个条目结尾加上分号后我留了一个空格。

0

若要在命令提示符中使用 javac 而不每次都需要键入完整位置,您需要将其添加到路径中。

我不确定是否可以在没有管理员权限的情况下更改它,但是在 Windows 7 上有管理员权限,您可以转到开始 -> 右键单击我的电脑 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量

您可以找到系统变量路径并在其末尾追加 javac 的位置。

javac 的确切位置将根据您安装的 JDK 版本而异。在安装过程中,您将被要求选择安装位置。

编辑:还要确保您没有以管理员身份打开 cmd。或者在管理员帐户上执行该视频中的步骤。

将变量添加到环境变量菜单的顶部部分意味着它们仅影响当前用户。如果您让某人输入管理员密码,则应能够在普通帐户上执行这些操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接