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

Mr *_*kél 5 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
Run Code Online (Sandbox Code Playgroud)

但是,我尝试将 JAVA_HOME 设置.bashrc为以下所有内容:

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/"
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

ken*_*orb 7

在 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
Run Code Online (Sandbox Code Playgroud)

找出与您的java命令链接的可执行文件。

注意:当update-alternatives与该选项一起使用时--config,预期目标是手动设置与该命令链接的可执行文件(例如,请参见此处)。出于我们的目的,我们可以使用--queryoption 来代替。

JDK路径是这些路径中的前缀,即 之前的路径jre。例如,根据上面的输出,您可以JAVA_HOME.bashrc文件中设置:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

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

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 catalina.sh debug
Run Code Online (Sandbox Code Playgroud)


vkg*_*vkg 0

方法1添加到bashrc就可以了。

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

JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386/jre/bin
Run Code Online (Sandbox Code Playgroud)

方法3 甚至更干净的方法是创建一个env_var.sh(假设您在与catalina.h相同的文件夹中创建了env_var.sh)文件,然后在catalina.sh中使用env_var.sh文件,如下所示

source ./env_var.sh
Run Code Online (Sandbox Code Playgroud)

现在,您可以将自己的环境特定设置放入这个新文件中,并让 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
Run Code Online (Sandbox Code Playgroud)

我希望它有帮助:)