我尝试设置JAVA_HOME路径,因为我的Tomcat服务器正在寻找它。我试图设置它,但它似乎不起作用,并在我这样做时导致错误。我正在尝试使用
在setclasspath.bat中设置JAVAset 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”时,它会显示
此时文件意外
你能帮助我吗?
答案 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)
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