雄猫 6 JAVA_HOME

2022-09-01 21:41:50

我尝试设置JAVA_HOME路径,因为我的Tomcat服务器正在寻找它。我正在尝试设置它,但它似乎不起作用,并且在我这样做时会导致错误。我正在尝试在setclasspath中设置JAVA.bat使用

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

这是在 setclasspath 的开头.bat

set JAVA_HOME="C:\Program Files (x86)\Java\jre7"
if not "%JAVA_HOME%" == "" goto gotJdkHome
if not "%JRE_HOME%" == "" goto gotJreHome
echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
echo At least one of these environment variable is needed to run this program
goto exit

当我设置此并运行“启动.bat启动”时,它显示

此时文件出乎意料

你可以帮我吗?


答案 1

注意:我意识到这已经是一个相当古老的问题,但这里发布的许多答案要么不完整,要么不准确。希望这将有助于避免一些麻烦。

首先:Tomcat不需要JDK来运行,只要它知道它是JRE,它就可以很好地与JRE一起工作。

其次,原始问题中的错误来自命令的语法问题。Apache本身可以通过剥离和添加引号来更好地处理它。set JAVA_HOME=..."

另外,我强烈建议在文件夹中创建一个文件。默认情况下,它不存在,因此,如果您还没有,请创建它并在其中添加您的或行。setenv.batbinset JAVA_HOME=...set JRE_HOME=...

使用 JRE 运行

根据运行.txt

JRE_HOME变量用于指定 JRE 的位置。JAVA_HOME变量用于指定 JDK 的位置。

使用JAVA_HOME可以访问使用JRE_HOME时不允许的某些其他启动选项。

如果同时指定了JRE_HOME和JAVA_HOME,则使用JRE_HOME。

因此,要以这种方式启动,您需要具备以下条件:

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

清除变量是一种故障保护,但实际上并不是必需的。根据文档,Tomcat将首先尝试使用JRE变量。JAVA_HOME

相关问题的解决方案

特别注意引号的位置。这样,将整个字符串放在一个变量中,而不在变量内容本身中包含引号。

例如:

set %TEST%="hello"
echo "%TEST%"

将输出 。""hello""

set "%TEST%=hello"
echo "%TEST%"

将输出 。"hello"

因此,启动批处理文件脚本正在尝试使用 ,其中第一个非转义空格位于“程序”和“文件”之间。""C:\Program Files (x86)\Java\jre7""

如前所述,删除引号(至少在这种特殊情况下)是可行的,但依赖它是危险的。相反,从一开始就安全行事,并将变量名称值括在引号中。


答案 2

我在Windows 7上遇到了同样的问题,具有以下定义(我将其放在.bat的setenv.bat文件中,如tomcat 7的RUNNING.txt所指定的那样。

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

我只是尝试完全删除双引号:

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

然后雄猫开始了。


推荐