wheezy-backports 中的 tomcat8 因 configtest.sh 失败

rmu*_*ler 6 tomcat debian-wheezy

我已经tomcat8wheezy-backports. 我使用具有以下期望的默认/未修改安装:

  • 我使用 Oracle Java 8 JDK
  • /etc/default/tomcat8添加:JAVA_HOME=/usr/lib/jvm/java-8-oracle

我可以启动/停止 tomcat。但是会显示很多警告。检查/usr/share/tomcat8/bin/configtest.sh,输出为:

  Using CATALINA_BASE:   /usr/share/tomcat8
  Using CATALINA_HOME:   /usr/share/tomcat8
  Using CATALINA_TMPDIR: /usr/share/tomcat8/temp
  Using JRE_HOME:        /usr
  Using CLASSPATH:       /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/common/classes], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/common], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/server/classes], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/server], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/shared/classes], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
  WARNING: Problem with directory [/usr/share/tomcat8/shared], exists: [false], isDirectory: [false], canRead: [false]
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.Catalina initDirs
  SEVERE: Cannot find specified temporary folder at /usr/share/tomcat8/temp
  Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.Catalina load
Run Code Online (Sandbox Code Playgroud)

显然有些问题:)

  • JRE_HOME 应该设置为 JAVA_HOME,但不是
  • 缺少目录
  • (从这个例子中不清楚)日志没有正常工作(更改/etc/tomcat8/logging.properties没有效果。但设置是正确的(见ps输出)和/var/lib/tomcat8/conf -> /etc/tomcat8

这里有什么问题?

更新

输出ps(已编辑以提高可读性),看起来不错 imo:

  $ ps aux | grep java
  tomcat8  15654  0.1  3.6 2643416 147024 ?      Sl   Jan10   1:42 /usr/lib/jvm/java-8-oracle/bin/java \
  -Xmx1024m -XX:+UseConcMarkSweepGC \
  -Djava.util.logging.config.file=/var/lib/tomcat8/conf/logging.properties \
  -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
  -Djava.awt.headless=true \
  -Djava.endorsed.dirs=/usr/share/tomcat8/endorsed \
  -classpath /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar \
  -Dcatalina.base=/var/lib/tomcat8 \
  -Dcatalina.home=/usr/share/tomcat8 \
  -Djava.io.tmpdir=/tmp/tomcat8-tomcat8-tmp 
  org.apache.catalina.startup.Bootstrap start
Run Code Online (Sandbox Code Playgroud)

更新 2

Ubuntu 上的 Tomcat 8 也有类似问题,参见http://java.dzone.com/articles/vaadin-docker-a-novices-journey

Mik*_*ike 1

我发现只有当你运行时你才会看到这个configtest.sh,并且有一个明显的原因:CATALINA_BASE等。只能设置在/etc/init.d/tomcat8. 当我configtest.sh像你一样运行时,我得到相同的输出。

如果您想以与守护程序相同的方式运行configtest,您可能需要破解/etc/init.d/tomcat8以接受该参数。由于某种原因,软件包维护者没有遇到这个麻烦。看起来您也可以在运行之前手动设置环境变量configtest.sh;我想catalina.sh会接他们的。


这些WARNING: Problem with directory行来自 中设置的类加载器路径/etc/tomcat8/catalina.properties。这可能只是 Debian 维护者留下的一些旧东西......以免破坏旧配置?目前上游并不全部存在之前已经讨论过