2016-11-20 61 views
0

我刚做了jflex和cup的安装,我想测试一切是否正常。 以下是我在shell中写的内容以及我得到的结果。 enter image description here无法在Windows 8.1中运行jflex.bat

这里是jflex.bat文件的内容: enter image description here 有什么我做错了? 如何运行第一次jflex?当我编写java -version时,它会在我的电脑中显示正确的java版本。问题在于jflex。

谢谢!

+0

请使用“图片”图标(如风景)包含图形,以便将来的读者可以看到数据是什么。最好剪切并粘贴代码片段,然后选择并按下'{}'标记为代码。这样,您的代码是可编辑的,不必重新输入,从而保存错别字。 – Magoo

+0

...或者您可以将控制台中的文本复制粘贴到您的问题中。因为未来用户无法通过搜索图片中显示的错误消息来查找您的问题。 – Seki

回答

1

如果您正在执行%java_home%\bin,你应该

1)括在 “双引号”
2)同样,请用 “双引号”

%clpath%这样%java_home%\bin\javacmd是意识到引号之间的内容是单个字符串。

1

您需要用双引号括住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:\ProgramFiles(x86)(它只是将空白用作参数的分隔符,就像往常一样!)。然后它会将第一个C:\Program作为可执行程序的路径,并将该行的其余部分作为其参数。因为C:\Program不路径有效的可执行你的错误

“C:\ PROGRAM”没有被识别为外部或内部command`

所以要让它知道他总是有作为一个整体来看C:\Program Files (x86)(同一事物的一部分:到目录的一个路径),您只需用双引号括起它即可。在批处理中,当代表一个路径时,用双引号包围变量总是明智的!现在,你有3种选择:

  1. 最简单的一个(只解决这个特定的问题):更换

    set JAVA_HOME=C:\Program Files (x86)\Java 
    

    set JAVA_HOME="C:\Program Files (x86)\Java" 
    

    这样,你要确保无处不在的JAVA_HOME使用,你将不会再有问题,因为空间周围“文件”

  2. Go到处使用%JAVA_HOME%并将其替换为"%JAVA_HOME%"(只用双引号括起来)。您可以为%JFLEX_HOME%所有用途做同样的,因为这也代表了路径

  3. 的最后一个选项(最一般的,一个你应该考虑在批规则)环绕的路径都表示(设置文字路径或路径在变量中)用双引号。

+0

但java是好的。当我编写java -version时,它会在我的电脑中显示正确的java版本。问题在于jflex。 –

+0

你的java没有问题(或者至少不是导致错误的原因) –

+0

我编辑了我的答案并提供了一些更多解释,希望它能帮助你理解问题并解决它:) –

相关问题