Tomcat 6 JAVA_HOME

时间:2013-08-27 14:46:29

标签: java tomcat batch-file tomcat6

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

在setclasspath.bat中设置JAVA
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”时,它会显示

  

此时文件意外

你能帮助我吗?

8 个答案:

答案 0 :(得分:34)

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

首先:Tomcat 不需要运行JDK,只要它知道它是JRE就可以正常使用JRE。

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

另外,我强烈建议在setenv.bat文件夹中创建bin文件。它默认不存在,所以如果您还没有,请创建它并在那里添加set JAVA_HOME=...set JRE_HOME=...行。

使用JRE运行

根据running.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"

清除JAVA_HOME变量是故障安全的,但并不是真的需要它。根据文档,Tomcat将首先尝试使用JRE变量。

问题中的问题解决方案

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

例如:

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

将输出""hello""

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

将输出"hello"

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

正如已经指出的那样,删除引号(至少在这种特殊情况下)会起作用,但依赖它会很危险。而是从一开始就安全地使用它,并将变量名称​​和值包装在引号中。

答案 1 :(得分:8)

我在Windows 7上遇到了同样的问题,具有以下定义(我把它放在jtk bin文件夹中的setenv.bat文件中,由tomcat 7' s RUNNING.txt指定。

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

我只是试图删除双引号:

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

然后tomcat开始了。

答案 2 :(得分:4)

  • 首先,安装java并找到安装路径。
  • 找到tomcat安装路径并在\ bin
  • 中找到startup.bat
  • 打开startup.bat并在rem Guess CATALINA_HOME if not defined之后和:: JAVA set JAVA_HOME=D:\thushara_data\Java\jdk1.8.0_73 set PATH=%JAVA_HOME%\bin;%PATH% 之前添加以下(示例)行
startup.bat

现在尝试重新运行public void videoTimer () { try { running = true; final int duration = mVideoView.getDuration(); thread = new Thread(new Runnable() { public void run() { do { tvVideoTimer.post(new Runnable() { public void run() { int time = (duration - mVideoView.getCurrentPosition()) / 1000; tvVideoTimer.setText(getTimeString(mVideoView.getCurrentPosition())); } }); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } if (!running) break; } while (mVideoView.getCurrentPosition() <= duration); } }); thread.start(); } catch (Exception e) { e.printStackTrace(); } }

答案 3 :(得分:1)

将路径放在引号中:

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

该错误是由于它将程序文件中的文件解析为一个单独的参数,这是SET不期望的。为什么SET没有正确读取它我不能不知道你正在使用什么操作系统,从哪个命令shell运行Tomcat等等。

答案 4 :(得分:1)

你的命令失败的原因是因为它在'Program Files(x86)'之间有空格,所以它开始从'Files(x86)'读取命令。所以我们把它放在双引号之间,如下所示。 试试这个..

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

答案 5 :(得分:1)

  • 如果无法手动设置变量: 设置JAVA_HOME and JRE_HOME

  • 继续进行系统设置,然后单击environment变量

  • system变量下单击

  • 新变量名:JAVA_HOME
  • 变量值:[path of jdk]C:\Program Files\Java\jdk1.8.0_181,然后单击确定

  • 类似地添加JRE_HOME

  • 点击新的变量名称:JRE_HOME
  • 变量值:[path of jre]C:\Program Files\Java\jre1.8.0_181
  • 单击确定> 确定> 确定

答案 6 :(得分:0)

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

答案 7 :(得分:0)

尝试 https://askubuntu.com/questions/446294/how-to-start-tomcat7-when-catalina-sh-does-not-work 它可以给你一些洞察力,即使它不是Windows它仍然寻找那些shell脚本,除了它们在Window中的扩展名是.bat而不是.sh