繁体   English   中英

雄猫 6 JAVA_HOME

[英]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启动了。

  • 首先安装java并定位到安装路径。
  • 找到tomcat安装路径,在\\bin中找到startup.bat
  • 打开 startup.bat 并在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM