javac不能在Windows命令提示符下工作
我试图用Windows命令提示符使用javac,但它不工作。
在将“C:\ Program Files \ Java \ jdk1.6.0_16 \ bin \”目录添加到环境pathvariables的末尾之后,java命令正常工作,但是使用javac给了我下面的错误:
'javac' is not recognized as an internal or external command, operable program or batch file.
有任何想法吗? 谢谢。
如果您在命令提示符处于打开状态时将其添加到控制面板中,则不会影响当前的命令提示符。 您需要退出并重新打开,或者只需执行以下操作:
set "path=%path%;c:\program files\java\jdk1.6.0_16\bin"
通过检查,执行:
echo %path%
从您的命令提示符,让我们知道它是什么。
否则,请通过以下方法确保该目录中有一个javac:
"c:\program files\java\jdk1.6.0_16\bin\javac.exe"
从命令提示符。 您还可以知道该命令使用了哪个可执行文件(如果有的话):
for %i in (javac.exe) do @echo %~$PATH:i
这是类似于某些UNIXtypes操作系统中的which
命令和/或which
命令的巧妙技巧。
Windows操作系统会searchPATH环境variables中列出的当前目录和目录中的可执行程序。 JDK的程序(例如Java编译器javac.exe和Java运行时java.exe)驻留在目录“\ bin”(其中表示JDK安装的目录,例如C:\ Program Files \ Java \ jdk1.8.0_xx)。 您需要在PATH中包含“\ bin”目录。
在Windows XP / Vista / 7/8中编辑PATH环境variables:
-
控制面板⇒系统⇒高级系统设置
-
切换到“高级”选项卡⇒环境variables
-
在“系统variables”中,向下滚动select“PATH”⇒编辑
((现在在继续阅读以下3次, 没有UNDO ))
在“variables值”字段中,插入“c:\ Program Files \ Java \ jdk1.8.0_xx \ bin”(将xxreplace为升级编号,并且VERIFY表示这是您的JDK的二进制目录!!!)目录,后跟一个分号(;),将JDK的二进制目录与其余的现有目录分开。 不要删除任何现有的条目; 否则,某些现有应用程序可能无法运行。
Variable name : PATH Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[existing entries...]
经过一段长时间的Google后,我才知道javac.exe必须位于JDK (C:\ Program Files \ Java \ jdk(版本号)\ bin)内部,而不是在JRE (C:\ Program Files(x86)\ Java \ jre7 \ bin) “JRE没有附带一个编译器,它(JRE)只是一个Java运行时环境,你需要的是Java开发工具包。 为了使用编译器javac
如果您在jre中指向bin,javac将不起作用
为了在cmd中使用javac,必须在您的系统中安装JDK …
对于javacpath
path= C:\ Program Files文件(x86)\ Java \ jre7 \ bin这是错误的
path = C:\ Program Files \ Java \ jdk(版本号)\ bin这是正确的
确保“javac.exe”位于“C:\ Program Files \ Java \ jdk(版本号)\ bin”
不要混淆JRE和JDK两者是完全不同的
如果您没有JDK请从此链接下载http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
JDK和JRE的引用线程JDK和JRE有什么区别?
我知道这可能不是你的具体错误,但我曾经在我的path中有一个领先的空间,Java将工作,但javac不会。
对于它的价值,我提供了一些忠告:“仔细检查你的path”。
试试这里的解决scheme: http : //techdem.centerkey.com/2009/05/javahome-command-script.html
这些更改更健壮 – 就像升级JDK或JRE时一样,因为没有硬编码path。
快速解决scheme(如果你不想读博客)是
C:\>for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i C:\>set PATH=%PATH%;%JAVA_HOME%
然后,您可以将这些行添加到启动/login脚本。
我只需要做到这一点,以使其在Windows 7 64上工作。
打开命令提示符(cmd.exe),然后键入:
set CLASSPATH=C:\Program Files\Java\jdk1.7.0_01\bin
确保您重新打开所有正在运行的命令提示符窗口以更新环境variables。
好吧,事情不总是这样,但是我们中的许多人在过去犯过这个错误,很less有人还没有意识到这一点,也就是说,每当你追加任何环境variables的path(任何path)时,你在“分号”之后,你可能会碰到空格键(正如你通常在“时间段”之后键入编辑器那样)。
这将在path中创build一个前导空间,例如“C:\ Program Files \ Java \ jdk1.6.0 \ bin”,因此系统将不会find“javac.exe”。
更改文件夹“jdk1.7.0_45”“jdk1_7_0_60”并更新Windows环境中的path。 否则,path会忽略代表隐藏文件的前面的点,因此该文件夹不会显示在PATHstring中。
我遇到了java的工作,但javac不会在Windows 8中的cmd提示完全相同的问题。
发生这个问题是因为我忘记在path名的末尾删除'>'
,即它是这样的:
C:\Program Files\Java\jdk*\bin>
假设它是这样的:
C:\Program Files\Java\jdk*\bin
path只会设置为pipe理员帐户。 因此,以pipe理员身份启动命令提示符非常重要,如果您还不是。
确保Pathvariables中的path之间不允许有空格(空格)。 我的问题是我有空白,我相信Windows把它当作一个NULL,并没有读取我的path为Java。
我在这个标题中发表了同样的问题。 Java会工作,但javac
不会在Windows命令提示符( cmd.exe
)。
对我来说,简单地说,我在将C:\Program Files\Java\jdk1.8.0\bin
到%PATH%
环境variables的末尾时放置了一个空格。
删除之间的空间;
和下一个文件path。
我很欣赏这是一个老问题,但我的解决scheme并不是在这里发布的答案,以防其他人尝试其余的情况。
就我而言,以前安装的Java JRE(在ProgramData / Oracle / Java中)在pathvariables列表的顶部有一个pathvariables。 该“Oracle”path的内容有一个java.exe,但不是一个javac.exe。 我将完整的JDKpath添加到pathvariables列表的顶部,位于“Oracle”pathvariables之前,然后selectjavac.exe和java。
for /d %i in ("\Program Files\Java\jdk*") do set JAVA_HOME=%i set JAVA_HOME
这个解决scheme对我有用
“; C:\ Program Files \ Java \ jdk1.6.0 \ bin”有时您可能会忘记将分号放在最后一个现有path上。
当我试图使.java .class的命令Javac没有工作。 我得到它的工作转到C:\ Program Files文件(x86)\ Java \ jdk1.7.0_04 \ bin,当我在那个目录上时,我键入Javac.exe C \ Test \ test.java,它使类战术。 试试看。
把它作为“C:\ Program Files \ Java \ jdk1.6.0_16 \ bin”。 删除它将工作的反斜杠