在 windows 8.1 中不能 运行 jflex.bat
Can't run jflex.bat in windows 8.1
刚刚安装了jflex和cup,想测试一下是否一切正常。
这是我在 shell 中写的内容和我得到的结果。
这里是 jflex.bat 文件的内容:
我做错了什么吗?
第一次jflex如何运行?当我写 java -version 时,它会在我的电脑中显示 java 的正确版本。问题出在 jflex 上。
谢谢!
您需要用双引号将 JAVA_HOME 变量的值括起来,因为它包含空格
包含 java 环境根目录路径的 JAVA_HOME
变量包含空格:C:\Program Files (x86)\Java
。它用在倒数第三行:
%JAVA_HOME%\bin\java -classpath...
因此,只要代入 %JAVA_HOME%
的值,您就会得到:
C:\Program Files (x86)\bin\java -classpath...
你会说:"it's just a path to the java executable"。但这不是命令解释器的看法,它会认为你给出了 3 个不同的东西:C:\Program
Files
(x86)
(它只是像往常一样将空格作为参数的分隔符!)。然后它将第一个 C:\Program
作为可执行程序的路径,并将该行的其余部分作为其参数。因为 C:\Program
不是有效可执行文件的路径,所以您得到错误
'C:\Program' is not recognized as an external or internal command`
因此,要让它知道他总是必须将 C:\Program Files (x86)
视为一个整体(同一事物的一部分:目录的一条路径),您只需用双引号将其括起来。在批处理中,当变量表示路径时用双引号括起来总是明智的!现在你有 3 个选项:
最简单的(只会解决这个特定问题):替换
set JAVA_HOME=C:\Program Files (x86)\Java
和
set JAVA_HOME="C:\Program Files (x86)\Java"
这样你就可以确保在任何地方都使用 JAVA_HOME,你不会再因为 "Files"
周围的空格而出现问题
去所有你用过 %JAVA_HOME%
的地方,用 "%JAVA_HOME%"
替换它(用双引号括起来)。您可以对 %JFLEX_HOME%
的所有用法执行相同的操作,因为这也代表路径
最后一个选项(最通用的,您应该将其视为批处理规则)用双引号将所有路径表示(文字路径或变量中设置的路径)括起来。
你在哪里执行%java_home%\bin
,你应该
1) 在"Double Quotes"
中包含%java_home%\bin\java
2) 同样,将 %clpath%
括在 "Double Quotes"
中
这样,cmd
就知道引号之间的内容是一个字符串。
刚刚安装了jflex和cup,想测试一下是否一切正常。
这是我在 shell 中写的内容和我得到的结果。
这里是 jflex.bat 文件的内容:
谢谢!
您需要用双引号将 JAVA_HOME 变量的值括起来,因为它包含空格
包含 java 环境根目录路径的 JAVA_HOME
变量包含空格:C:\Program Files (x86)\Java
。它用在倒数第三行:
%JAVA_HOME%\bin\java -classpath...
因此,只要代入 %JAVA_HOME%
的值,您就会得到:
C:\Program Files (x86)\bin\java -classpath...
你会说:"it's just a path to the java executable"。但这不是命令解释器的看法,它会认为你给出了 3 个不同的东西:C:\Program
Files
(x86)
(它只是像往常一样将空格作为参数的分隔符!)。然后它将第一个 C:\Program
作为可执行程序的路径,并将该行的其余部分作为其参数。因为 C:\Program
不是有效可执行文件的路径,所以您得到错误
'C:\Program' is not recognized as an external or internal command`
因此,要让它知道他总是必须将 C:\Program Files (x86)
视为一个整体(同一事物的一部分:目录的一条路径),您只需用双引号将其括起来。在批处理中,当变量表示路径时用双引号括起来总是明智的!现在你有 3 个选项:
最简单的(只会解决这个特定问题):替换
set JAVA_HOME=C:\Program Files (x86)\Java
和
set JAVA_HOME="C:\Program Files (x86)\Java"
这样你就可以确保在任何地方都使用 JAVA_HOME,你不会再因为 "Files"
周围的空格而出现问题
去所有你用过
%JAVA_HOME%
的地方,用"%JAVA_HOME%"
替换它(用双引号括起来)。您可以对%JFLEX_HOME%
的所有用法执行相同的操作,因为这也代表路径最后一个选项(最通用的,您应该将其视为批处理规则)用双引号将所有路径表示(文字路径或变量中设置的路径)括起来。
你在哪里执行%java_home%\bin
,你应该
1) 在"Double Quotes"
中包含%java_home%\bin\java
2) 同样,将 %clpath%
括在 "Double Quotes"
这样,cmd
就知道引号之间的内容是一个字符串。