在jdk\bin中找不到javac.exe

10

我正在尝试在运行64位Windows 10的Surface Pro 3上安装JDK。

正如《Core Java》的作者所建议的那样,我将Java安装在C:\Java\jdk1.8.0_72\路径下,以避免路径名中包含空格。我保证我已经安装了一个JDK(从这里下载),而不是一个JRE

然而,在设置了环境变量path之后,我打开命令提示符,输入javac -version,结果它告诉我'javac' is not recognized as an internal or external command, operable program or batch file.。所以我检查了C:\Java\jdk1.8.0_72\bin\目录,发现没有名为javac.exe的可执行文件!

这怎么可能呢?现在我该怎么办?

jave -version works well, but javac -version does not.

There is no javac.exe

这是我在jdk\bin目录下运行dir时的CMD输出:

Microsoft Windows [版本 10.0.10240]
(c) 2015 Microsoft Corporation. All rights reserved.

C:\Users\sqy>cd C:\Java\jdk1.8.0_72\bin

C:\Java\jdk1.8.0_72\bin>dir
 驱动器 C 中的卷没有标签。
 卷的序列号是 D611-8A7A

 C:\Java\jdk1.8.0_72\bin 的目录

2016/02/02  13:28    <DIR>          .
2016/02/02  13:28    <DIR>          ..
2016/02/02  13:28         1,182,304 awt.dll
2016/02/02  13:28            15,456 bci.dll
2016/02/02  13:28    <DIR>          client
2016/02/02  13:28           142,944 dcpr.dll
2016/02/02  13:28            63,584 decora_sse.dll
2016/02/02  13:28           451,168 deploy.dll
2016/02/02  13:28    <DIR>          dtplugin
2016/02/02  13:28            25,184 dt_shmem.dll
2016/02/02  13:28            21,600 dt_socket.dll
2016/02/02  13:28           109,152 eula.dll
2016/02/02  13:28           222,816 fontmanager.dll
2016/02/02  13:28           151,136 fxplugins.dll
2016/02/02  13:28           200,800 glass.dll
2016/02/02  13:28           400,992 glib-lite.dll
2016/02/02  13:28           514,656 gstreamer-lite.dll
2016/02/02  13:28           131,680 hprof.dll
2016/02/02  13:28           115,808 instrument.dll
2016/02/02  13:28            16,480 j2pcsc.dll
2016/02/02  13:28            51,296 j2pkcs11.dll
2016/02/02  13:28            19,552 jaas_nt.dll
2016/02/02  13:28            30,816 jabswitch.exe
2016/02/02  13:28            15,968 java-rmi.exe
2016/02/02  13:28           126,560 java.dll
2016/02/02  13:28           191,072 java.exe
2016/02/02  13:28           127,584 JavaAccessBridge.dll
2016/02/02  13:28           153,088 javacpl.cpl
2016/02/02  13:28            68,704 javacpl.exe
2016/02/02  13:28            57,440 javafx_font.dll
2016/02/02  13:28           444,000 javafx_font_t2k.dll
2016/02/02  13:28           126,048 javafx_iio.dll
2016/02/02  13:28           191,584 javaw.exe
2016/02/02  13:28           268,384 javaws.exe
2016/02/02  13:28            23,648 java_crw_demo.dll
2016/02/02  13:28            13,920 jawt.dll
2016/02/02  13:28            14,944 JAWTAccessBridge.dll
2016/02/02  13:28           163,936 jdwp.dll
2016/02/02  13:28            22,624 jfr.dll
2016/02/02  13:28           115,296 jfxmedia.dll
2016/02/02  13:28        33,926,240 jfxwebkit.dll
2016/02/02  13:28            15,968 jjs.exe
2016/02/02  13:28           158,816 jli.dll
2016/02/02  13:28           205,920 jp2iexp.dll
2016/02/02  13:28            77,920 jp2launcher.exe
2016/02/02  13:28            19,040 jp2native.dll
2016/02/02  13:28           173,152 jp2ssv.dll
2016/02/02  13:28           146,016 jpeg.dll
2016/02/02  13:28            16,480 jsdt.dll
2016/02/02  13:28            30,816 jsound.dll
2016/02/02  13:28            27,744 jsoundds.dll
2016/02/02  13:28           178,272 kcms.dll
2016/02/02  13:28            15,968 keytool.exe
2016/02/02  13:28            15,968 kinit.exe
2016/02/02  13:28            15,968 klist.exe
2016/02/02  13:28            15,968 ktab.exe
2016/02/02  13:28           185,952 lcms.dll
2016/02/02  13:28            33,376 management.dll
2016/02/02  13:28           574,560 mlib_image.dll
2016/02/02  13:28           455,328 msvcp120.dll
2016/02/02  13:28           773,968 msvcr100.dll
2016/02/02  13:28           970,912 msvcr120.dll
2016/02/02  13:28            79,968 net.dll
2016/02/02  13:28            51,296 nio.dll
2016/02/02  13:28            17,504 npt.dll
2016/02/02  13:28            16,480 orbd.exe
2016/02/02  13:28            15,968 pack200.exe
2016/02/02  13:28    <DIR>          plugin2
2016/02/02  13:28            15,968 policytool.exe
2016/02/02  13:28            52,832 prism_common.dll
2016/02/02  13:28           116,832 prism_d3d.dll
2016/02/02  13:28            86,112 prism_sw.dll
2016/02/02  13:28            14,944 resource.dll
2016/02/02  13:28            15,968 rmid.exe
2016/02/02  13:28            15,968 rmiregistry.exe
2016/02/02  13:28            15,968 servertool.exe
2016/02/02  13:28           177,248 splashscreen.dll
2016/02/02  13:28           462,432 ssv.dll
2016/02/02  13:28            51,808 ssvagent.exe
2016/02/02  13:28           124,000 sunec.dll
2016/02/02  13:28            25,696 sunmscapi.dll
2016/02/02  13:28           193,120 t2k.dll
2016/02/02  13:28            16,480 tnameserv.exe
2016/02/02  13:28            65,632 unpack.dll
2016/02/02  13:28           159,328 unpack200.exe
2016/02/02  13:28            39,520 verify.dll
2016/02/02  13:28            21,600 w2k_lsa_auth.dll
2016/02/02  13:28            95,840 WindowsAccessBridge.dll
2016/02/02  13:28           164,448 wsdetect.dll
2016/02/02  13:28            69,728 zip.dll
              85 个文件     46,209,264 字节
               5 个目录 150,936,281,088 可用字节

C:\Java\jdk1.8.0_72\bin>

是的,我是一个中国人,所以输出中有一些中文字符。我已经将默认语言更改为英语,但它们仍然存在。不过,我想你仍然可以获取所需的信息。


似乎你的javac.exe文件不见了。你是不是不小心删掉了它?或者尝试重新安装一遍。我还没有遇到过这样的javac问题。一旦你安装好了,记得将bin文件夹添加到你的路径中。 - kushal
2
也许您在名为jdk的路径下安装了jre而不是jdk? - Jens
@kushal 不,不可能,因为这是一个新的安装。事实上,我已经重新安装了几次。C:\Java\jdk1.8.0_72\bin\ 已经添加到 path 中,但它仍然无法工作。 - nalzok
@Jens 我下载的来自Oracle的安装程序名为 jdk-8u72-windows-x64.exe。从它的名称判断,我认为这是一个JDK安装程序。 - nalzok
下次忽略书上的内容,使用默认设置。这对我来说百分之百有效。 - user207421
9个回答

4

这个文件位于你的C:\Java\jdk1.8.0_72目录下的bin文件夹中。

现在,您需要更新环境变量,并在分号后将C:\Java\jdk1.8.0_72\bin添加到Path变量中。重要提示:不要删除现有的Path变量,只需添加C:\Java\jdk1.8.0_72即可。

现在重新打开命令提示符并输入javac。

编辑: 如果安装程序问您想将JRE安装到哪里,您指向了与您告诉安装程序放置JDK的相同目录吗?在这种情况下,安装程序将使用JRE的bin内容覆盖JDK的bin内容。


抱歉,我的问题中有一个打字错误。实际上,在C:\Java\jdk1.8.0_72\bin中没有javac.exe。而且C:\Java\jdk1.8.0_72\bin已经被添加到Path变量中。 - nalzok
如果安装不同版本的JDK会发生什么?当您从JDK安装位置的bin目录运行dir命令时,您能否也发布输出? - aviad
我刚刚安装了jdk1.8.0_71,但是同样的问题又出现了。 - nalzok
1
安装程序是否询问您要将JRE安装到的位置时,您指向了与您告诉安装程序放置JDK的目录相同的目录?如果是这种情况,安装程序将用JRE的bin内容覆盖JDK的bin内容。 - aviad
这是真的可能的,我会再试一次。 - nalzok

4
我已经下载了同样的文件并更改了安装路径,假设您也这样做了。
同样的事情发生了。Java安装程序在我选择的路径下安装了一个jre,但也在C:\ Program Files \ Java \ jdk1.8.0_72下安装了一个jdk。请检查一下。
我不知道安装程序为什么会这样行事,但我认为您可以在C:\ Program Files \ Java \ jdk1.8.0_72 \ bin下找到javac。

我的设备在C:\Program Files\下没有名为Java的文件夹。在安装过程中,我更改了目标路径两次。你有这样做吗? - nalzok
我曾经更改过它。但是现在我重新安装了它,并更改了两次。安装程序将JDK安装到C:\ Java,但安装JRE时会删除所有文件并安装JRE。我在Windows中打开文件夹并查看了它:)。所以您的JDK被JRE安装程序删除了。我认为在第一或第二次更改文件夹时,您必须选择另一个文件夹。 - Ekrem
好的,那就是问题所在。 - nalzok

2
我曾经遇到过同样的问题。但是我发现我没有安装Java JDK本身,所以我去了这个链接并下载了Windows x64版本,只需按照说明进行操作即可。

它起作用了。也许你可以卸载Java JDK并重新安装。


2
请确保安装的是Java SDK,而不是Java RE。我只安装了Java RE,但它无法工作,让我感到困惑。
当你访问java.com时,默认建议你安装Java RE,这是一个容易犯的错误。

1

您必须为JDK和JRE选择不同的目标路径,否则一个将覆盖另一个!

例如,以下方式是有效的:

enter image description here

enter image description here


通常在这个网站上,如果答案对您有帮助,您会接受它,并不会使用一些截图重新发布它作为您自己的答案。 - aviad
@aviad 已接受。我只是想要更清晰地展示你的答案。 - nalzok

1

我不确定这是否能回答你的问题,但我尝试运行了我的1.19服务器.jar文件,然后它带我进入了这个网站,我下载了.msi文件,然后javac突然开始工作了。即使控制面板或路径也从未工作过。

网址:[https://adoptium.net/]

致谢:gleacc


0

我也遇到了1.8版本的同样问题。我试图通过浏览器(IE、Firefox、Chrome)中的任何一个来“运行”下载,但它们都没有生成“Javac.exe”文件。因此,我决定将安装程序的 .exe 文件下载并“保存”到我的本地计算机上,然后从那里执行它。当我这样做时(我还更改了默认安装目录),它就生成了一个 Javac.exe 文件。

我认为问题在于尝试通过浏览器“安装”。请下载并将 install.exe 保存到您的计算机上,并在计算机上执行它,而不是通过浏览器执行。


0

我通过从https://www.oracle.com/java/technologies/downloads/#jdk19-windows下载Windows Java 19 JDK压缩文件来解决了这个问题。我解压了文件并将其添加到位于C:/Program Files (x86)内的Java文件夹中。

注意:最初,我下载了一个名为jre1.9.0_361的压缩文件,但这是错误的文件。

之后,我右键单击Windows > System > Advanced System Settings。然后我选择了PATH(Path)变量并点击编辑。接着我点击New并输入了以下内容:

;C:\Windows\Program Files (x86)\Java\jdk-19.0.2

完成上述步骤后,我加载了ghidraRun.bat文件,点击Enter以打开对话框,进入C:\Windows\Program Files (x86)\Java\jdk-19.0.2,成功加载了软件。


-1

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