Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更正应该指向JDK而不是JRE文件夹的JAVA_HOME?_Java_Debugging_Jvm_Java Home_Catalina - Fatal编程技术网

如何更正应该指向JDK而不是JRE文件夹的JAVA_HOME?

如何更正应该指向JDK而不是JRE文件夹的JAVA_HOME?,java,debugging,jvm,java-home,catalina,Java,Debugging,Jvm,Java Home,Catalina,我正在尝试使用debug命令在Ubuntu Linux上运行Catalina。我得到以下错误: JAVA_HOME should point to a JDK in order to run in debug mode. /bin/sh died with exit status 1 但是,我已尝试将.bashrc中的JAVA_HOME设置为以下所有选项: export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-i386/" export JAVA_

我正在尝试使用debug命令在Ubuntu Linux上运行Catalina。我得到以下错误:

JAVA_HOME should point to a JDK in order to run in debug mode.
/bin/sh died with exit status 1
但是,我已尝试将
.bashrc
中的JAVA_HOME设置为以下所有选项:

export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-i386/"
export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-i386"
export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-i386/jre/bin"
export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-i386/jre/bin/"

我遗漏了什么吗?

方法1添加到bashrc将起作用

方法2但我认为更好的方法是将其添加到catalina.sh中

JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386/jre/bin
方法3 甚至更干净的方法是创建一个env_var.sh(假设您在catalina.h的同一文件夹中创建了env_var.sh)文件,然后像这样在catalina.sh中使用env_var.sh文件

source ./env_var.sh
现在,您可以在这个新文件中抛出自己的特定于环境的设置,并让catalina.sh保持安静。优点是您不会弄乱catalina.sh,也不会依赖于某个特定的用户bash配置文件

环境变量sh的简单示例

#!/bin/sh
JAVA_OPTS="$JAVA_OPTS -server"
JAVA_OPTS="$JAVA_OPTS -Xms2096m"
JAVA_OPTS="$JAVA_OPTS -Xmx4096m"
JAVA_OPTS="$JAVA_OPTS -XX:PermSize=128m"
JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=512m"

echo Using JAVA_OPTS settings $JAVA_OPTS

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=[some_port]"

echo Using CATALINA_OPTS settings $CATALINA_OPTS
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386
我希望它有帮助:)

在Debian/Ubuntu运行中:

$ sudo update-alternatives --config java
Path                                          
---------------------------------------------
/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
查找与
java
命令链接的可执行文件

注意:当使用
更新备选方案
--config
选项时,预期目标是手动设置与命令链接的可执行文件(例如,请参阅)。出于我们的目的,我们可以使用
--query
选项

路径是这些路径中的前缀,即
jre
之前的路径。例如,根据上述输出,您可以在
.bashrc
文件中设置
JAVA\u HOME

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
因此,您可以在运行命令之前导出此路径或前缀,例如:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 catalina.sh debug

更改设置后是否重新启动bash?更改设置后,请尝试
echo$JAVA\u HOME
并查看它提供了什么。为了重新加载设置,您可以尝试
source./.bashrc
此外,您可能希望将导出行添加到catalina.sh文件中,以及脚本是否作为当前用户或其他用户(root、tomcat等)运行?@Humdinger-是的,我已重新启动服务器并回显$JAVA_HOME。它的回声如所愿,但它仍然不喜欢它。我感谢你的评论!不幸的是,我无法控制catalina.sh或该文件夹中的任何内容。它都建立在目标目录中,当我对项目进行清理时会丢失…@MrA不知道你说的丢失是什么意思。你是说你的tomcat配置丢失了?我是说,包含catalina.sh的文件夹被删除并重建。它在目标目录中。所以,如果我把东西放进去,它就会消失……目标只是从一个源复制过来的。因此,您需要在源所在的任何位置进行更改。通常在tomcat环境中folder@Humdinger-您会猜它位于项目中的某个位置还是服务器文件空间中的某个位置?