Tomcat 6 JAVA_主页

Tomcat 6 JAVA_主页,java,tomcat,batch-file,tomcat6,Java,Tomcat,Batch File,Tomcat6,我尝试设置JAVA_主路径,因为我的Tomcat服务器正在寻找它。我试图设置它,但它似乎不工作,并导致错误时,我这样做。我正在尝试使用 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%

我尝试设置JAVA_主路径,因为我的Tomcat服务器正在寻找它。我试图设置它,但它似乎不工作,并导致错误时,我这样做。我正在尝试使用

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
当我设置并运行“startup.bat start”时,它会显示

此时出现意外的文件


你能帮我吗?

将路径用引号括起来:

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

该错误是由于它正在将程序文件中的文件作为一个单独的参数进行解析,这是SET所不期望的。为什么SET不能正确地阅读它我不能说,如果不知道更多关于您使用的操作系统、运行Tomcat的命令shell等等的信息。

您指的是JRE。您需要指向一个JDK,给定JRE的位置,它可能类似于
C:\ProgramFiles(x86)\Java\jdk1.6.0\u26
或类似的东西。或者,如果只安装了JRE,则需要安装完整的JDK。Tomcat需要能够将JSP编译成.class文件,这是JRE无法做到的。

命令失败的原因是因为它在“程序文件(x86)”之间有空格,因此它开始从“文件(x86)”读取命令。因此,我们将其放在双引号之间,如下所示。 试试这个

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

我在Windows7上也遇到了同样的问题,定义如下(我将它放在jdk bin文件夹中的setenv.bat文件中,由Tomcat7的RUNNING.txt指定)

set JAVA_HOME="C:\Program Files (x86)\Java\jre7"
我刚刚尝试完全删除双引号:

set JAVA_HOME=C:\Program Files (x86)\Java\jre7
然后tomcat启动了。

试试看
它可以给你一些见解,即使它不是Windows,它仍然会寻找那些shell脚本,除了它们在Windows中的扩展名是.bat not.sh。

注意:我意识到这已经是一个很老的问题,但这里发布的许多答案要么不完整,要么不准确。。希望这能帮助你省去一些麻烦

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

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

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

使用JRE运行

根据:

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"
清除
JAVA\u HOME
变量是一种故障保护,但实际上并不需要。根据文档,Tomcat将首先尝试使用JRE变量

问题解决方案

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

例如:

set %TEST%="hello"
echo "%TEST%"
将输出
“hello”

将输出“你好”

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

如前所述,删除引号(至少在本例中)是可行的,但依赖引号是危险的。宁可从一开始就谨慎行事,并将变量名和值用引号括起来。

  • 首先,安装java并找到安装路径
  • 找到tomcat安装路径并在\bin中找到startup.bat
  • 打开startup.bat并在
    setlocal
    之后和
    rem Guess CATALINA\u HOME之前添加以下(示例)行(如果未定义)
现在尝试重新运行
startup.bat

  • 如果无法手动设置变量: 设置
    JAVA\u HOME和JRE\u HOME

  • 转到高级系统设置并单击
    环境
    变量

  • 系统
    变量下,单击

  • 新变量名:
    JAVA\u HOME
  • 变量值:
    [jdk的路径]C:\ProgramFiles\Java\jdk1.8.0\u 181
    并单击ok

  • 同样,添加
    JRE\u HOME

  • 单击新变量名:
    JRE\u HOME
  • 变量值:
    [jre路径]C:\Program Files\Java\jre1.8.0\u 181
  • 单击确定>确定>确定

尝试将JAVA\u HOME设置为系统环境变量,转到“系统设置”的“高级”选项卡,单击“新建”并设置JAVA\u HOME。您的路径包含空格,这在.BAT文件中不起作用。您必须将路径用引号括起来。
set JAVA\u HOME=“C:\Program files(x86)\JAVA\jre7“
。但是,如果您指向JRE,tomcat要工作,必须指向JDK(tomcat需要一个编译器,它不是JRE的一部分,而是JDK的一部分)。我在Windows Server 2008 R2 Enterprise 64bi上运行它,关于的代码是一个bat文件;我只是通过CMD运行Tomcat。因为这个答案明显不正确。我已经概述了最初问题的原因以及如何避免。这非常有效!我最初将%JAVA_HOME%=“C:\Program Files\path\to\jdk”就是这样。但是我用
设置“JAVA\u HOME=“
清除了JAVA\u HOME”,然后运行
设置“JRE\u HOME=C:\Program Files\path\to\JRE”
。来自*nix,这开始让人感到痛苦。谢谢!
set "%TEST%=hello"
echo "%TEST%"
:: JAVA
set JAVA_HOME=D:\thushara_data\Java\jdk1.8.0_73
set PATH=%JAVA_HOME%\bin;%PATH%