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

时间:2014-05-12 21:54:21

标签: 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_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/"

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

在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

找出您的JRE个Java路径,因此您的JDK路径是没有jre的路径,例如:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

因此,您可以在运行命令之前export使用此变量或前缀,例如:

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

答案 1 :(得分:0)

方法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配置文件。

env_var.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

我希望它有所帮助:)