我SSH方式登錄我的服務器(Ubuntu的12.04),並不管我了JAVA_HOME和JRE_HOME tomcat6中設置不想要開始:的Tomcat6沒有JDK中存在
[email protected]:/usr/lib/jvm/jdk-oracle.1.6.0_33$ echo $JAVA_HOME
/usr/lib/jvm/jdk-oracle.1.6.0_33/bin
[email protected]:/usr/lib/jvm/jdk-oracle.1.6.0_33$ echo $JRE_HOME
/usr/lib/jvm/jdk-oracle.1.6.0_33/jre
[email protected]:/usr/lib/jvm/jdk-oracle.1.6.0_33$ sudo service tomcat6 start
* no JDK found - please set JAVA_HOME
[email protected]:/usr/lib/jvm/jdk-oracle.1.6.0_33$ export JAVA_HOME=/usr/lib/jvm/jdk-oracle.1.6.0_33
[email protected]:/usr/lib/jvm/jdk-oracle.1.6.0_33$ sudo service tomcat6 start
* no JDK found - please set JAVA_HOME
[email protected]:/usr/lib/jvm/jdk-oracle.1.6.0_33$ ls $JAVA_HOME
bin db jre LICENSE README.html register_ja.html src.zip
COPYRIGHT include lib man register.html register_zh_CN.html THIRDPARTYLICENSEREADME.txt
[email protected]:/usr/lib/jvm/jdk-oracle.1.6.0_33$ ls $JAVA_HOME/bin
appletviewer HtmlConverter java javap jdb jps jstat native2ascii rmic serialver wsgen
apt idlj javac javaws jhat jrunscript jstatd orbd rmid servertool wsimport
ControlPanel jar javadoc jconsole jinfo jsadebugd jvisualvm pack200 rmiregistry tnameserv xjc
extcheck jarsigner javah jcontrol jmap jstack keytool policytool schemagen unpack200
我一直在尋找的tomcat6的init.d腳本,並且我找到了一些自定義邏輯來搜索openjdk。我不想使用openjdk,我故意安裝oracle!這裏的腳本init.d中的SNIPPIT(我沒有寫):
# this is a work-around until there is a suitable runtime replacement
# for dpkg-architecture for arch:all packages
# this function sets the variable OPENJDKS
find_openjdks()
{
for jvmdir in /usr/lib/jvm/java-7-openjdk-*
do
if [ -d "${jvmdir}" -a "${jvmdir}" != "/usr/lib/jvm/java-7-openjdk-common" ]
then
OPENJDKS=$jvmdir
fi
done
for jvmdir in /usr/lib/jvm/java-6-openjdk-*
do
if [ -d "${jvmdir}" -a "${jvmdir}" != "/usr/lib/jvm/java-6-openjdk-common" ]
then
OPENJDKS="${OPENJDKS} ${jvmdir}"
fi
done
}
# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
# defined in $DEFAULT)
OPENJDKS=""
find_openjdks
JDK_DIRS="/usr/lib/jvm/default-java ${OPENJDKS} /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm"
# Look for the right JVM to use
for jdir in $JDK_DIRS; do
if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
JAVA_HOME="$jdir"
fi
done
export JAVA_HOME
,我不得不刪除從/ usr/lib中/ JVM OpenJDK的,因爲愚蠢的tomcat不斷髮現它和使用它,即使我的JAVA_HOME變量被設置爲使用oracle的java。
請幫忙嗎?我不知道如何解決這個問題。我使用Maven和Maven的方式完美地處理了我設置JAVA_HOME變量的方式。
編輯:
我打開的init.d tomcat的腳本,並改變了這一行:
JDK_DIRS="/usr/lib/jvm/default-java ${OPENJDKS} /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm"
這樣:
JDK_DIRS="/usr/lib/jvm/jdk-oracle.1.6.0_33 /usr/lib/jvm/default-java ${OPENJDKS} /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm"
(我只是說我的道路/usr/lib/jvm/jdk-oracle.1.6.0_33
到字符串) 突然用tomcat啓動並運行我的oracle java。我猜這是有效的,但這不可能是最好的辦法。
編輯:
StephenC:
[email protected]:/usr/lib/jvm$ sudo bash
[email protected]:/usr/lib/jvm# echo $JAVA_HOME
/usr/lib/jvm/jdk-oracle.1.6.0_33
從技術上講,它應該是真正的tomcat6用戶將啓動java(不是root),那麼環境變量是爲我設置的,但不是tomcat6用戶?我嘗試用'sudo su - tomcat6'作爲tomcat6登錄,但是當我執行該命令時沒有任何反應。 – Ring
技術上,是的。但問題是一樣的。當您使用'su'或'sudo'時,環境變量設置不會(通常)傳遞。 (有命令選項可以覆蓋...閱讀相應的手冊條目。) –
「sudo nano/etc/default/tomcat6」並添加 「JAVA_HOME =/usr/lib/jvm/jdk-oracle.1.6.0_33」 –