无法在Windows 8.1中运行jflex.bat
我刚做了jflex和cup的安装,我想测试一切是否正常。 以下是我在shell中写的内容以及我得到的结果。 无法在Windows 8.1中运行jflex.bat
这里是jflex.bat文件的内容: 有什么我做错了? 如何运行第一次jflex?当我编写java -version时,它会在我的电脑中显示正确的java版本。问题在于jflex。
谢谢!
如果您正在执行%java_home%\bin
,你应该
1)括在 “双引号”
2)同样,请用 “双引号”
%clpath%
这样%java_home%\bin\java
,cmd
是意识到引号之间的内容是单个字符串。
您需要用双引号括住JAVA_HOME变量的值,因为它包含空格 包含java环境的根目录路径的JAVA_HOME
变量包含空格:C:\Program Files (x86)\Java
。它被用来在第三最后一行:
%JAVA_HOME%\bin\java -classpath...
所以仅通过替换的%JAVA_HOME%
值你:
C:\Program Files (x86)\bin\java -classpath...
你会说:“这只是在Java可执行文件的路径”。但这不是命令解释器看到它的方式,它会认为你给出了3个不同的东西:C:\Program
Files
(x86)
(它只是将空白用作参数的分隔符,就像往常一样!)。然后它会将第一个C:\Program
作为可执行程序的路径,并将该行的其余部分作为其参数。因为C:\Program
不路径有效的可执行你的错误
“C:\ PROGRAM”没有被识别为外部或内部command`
所以要让它知道他总是有作为一个整体来看C:\Program Files (x86)
(同一事物的一部分:到目录的一个路径),您只需用双引号括起它即可。在批处理中,当代表一个路径时,用双引号包围变量总是明智的!现在,你有3种选择:
-
最简单的一个(只解决这个特定的问题):更换
set JAVA_HOME=C:\Program Files (x86)\Java
与
set JAVA_HOME="C:\Program Files (x86)\Java"
这样,你要确保无处不在的JAVA_HOME使用,你将不会再有问题,因为空间周围“文件”
Go到处使用
%JAVA_HOME%
并将其替换为"%JAVA_HOME%"
(只用双引号括起来)。您可以为%JFLEX_HOME%
所有用途做同样的,因为这也代表了路径的最后一个选项(最一般的,一个你应该考虑在批规则)环绕的路径都表示(设置文字路径或路径在变量中)用双引号。
但java是好的。当我编写java -version时,它会在我的电脑中显示正确的java版本。问题在于jflex。 –
你的java没有问题(或者至少不是导致错误的原因) –
我编辑了我的答案并提供了一些更多解释,希望它能帮助你理解问题并解决它:) –
请使用“图片”图标(如风景)包含图形,以便将来的读者可以看到数据是什么。最好剪切并粘贴代码片段,然后选择并按下'{}'标记为代码。这样,您的代码是可编辑的,不必重新输入,从而保存错别字。 – Magoo
...或者您可以将控制台中的文本复制粘贴到您的问题中。因为未来用户无法通过搜索图片中显示的错误消息来查找您的问题。 – Seki