[英]Tomcat 6 JAVA_HOME
我尝试设置 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”时它会显示
此时文件意外
你能帮助我吗?
注意:我意识到这已经是一个很老的问题了,但是这里发布的许多答案要么不完整,要么不准确。希望这将有助于避免一些麻烦。
首先:Tomcat不需要运行 JDK,只要它知道它是 JRE,它就可以与 JRE 一起工作。
其次,原始问题的错误来自set JAVA_HOME=...
命令的语法问题。 Apache 自己可以通过剥离和添加"
引号来更好地处理它。
另外,我强烈建议在bin
文件夹中创建一个setenv.bat
文件。 默认情况下它不存在,因此如果您还没有,请创建它并在那里添加您的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" 之间。
正如已经指出的那样,删除引号(至少在这种特殊情况下)会起作用,但依赖它是危险的。 而是从一开始就安全地使用它,并将变量名称和值用引号括起来。
我在具有以下定义的 Windows 7 上遇到了同样的问题(我将它放在由 tomcat 7 的 RUNNING.txt 指定的 jdk bin 文件夹中的 setenv.bat 文件中。
set JAVA_HOME="C:\Program Files (x86)\Java\jre7"
我只是尝试完全删除双引号:
set JAVA_HOME=C:\Program Files (x86)\Java\jre7
然后tomcat启动了。
setlocal
之后和rem Guess CATALINA_HOME if not defined
之前添加以下(示例)行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
将路径放在引号中:
set JAVA_HOME="C:\Program Files (x86)\Java\jre7"
该错误是由于它将 Program Files 中的文件解析为一个单独的参数,这是 SET 不期望的。 为什么 SET 不能正确读取它我不能说不知道更多关于你正在使用的操作系统,你正在运行 Tomcat 的命令 shell,等等。
如果无法手动设置变量:设置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
您指向的是 JRE。 您需要指向一个 JDK,它给出了 JRE 的位置可能类似于C:\\Program Files (x86)\\Java\\jdk1.6.0_26
或类似内容。 或者,如果您只安装了 JRE,则需要安装完整的 JDK。 Tomcat 需要能够将 JSP 编译成 .class 文件,而 JRE 无法做到这一点。
您的命令失败的原因是它在“程序文件(x86)”之间有空格,因此它开始从“文件(x86)”中读取命令。 所以我们把它放在双引号之间,如下所示。 试试这个..
set JAVA_HOME="C:\Program Files (x86)\Java\jre7"
试试https://askubuntu.com/questions/446294/how-to-start-tomcat7-when-catalina-sh-does-not-work它可以给你一些见解,即使它不是 Windows 它仍然会寻找那些 shell 脚本除了它们在 Window 中的扩展名是 .bat 而不是 .sh
你也可以试试这个jre1.8v
:
在Tomcat服务器文件夹中打开cmd
并输入命令
set "JAVA_HOME=C:\\Program Files (x86)\\Java\\jre1.8.0_45"
然后输入命令cd bin
然后启动Tomcat服务器输入命令startup
停止Tomcat服务器输入命令shutdown
如果可以运行命令但启动失败: cd startup.bat
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.