wheezy-backports中的tomcat8失败,并显示configtest.sh

我从wheezy-backports安装了tomcat8软件包。 我使用默认/未经修改的安装与以下期望:

  • 我使用Oracle Java 8 JDK
  • /etc/default/tomcat8中join: 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 

显然有些问题:)

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

这里有什么问题?

UPDATE

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 

更新2

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

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

如果你想像守护进程一样运行configtest ,你可能会想要破解/etc/init.d/tomcat8来接受这个参数。 出于某种原因,软件包维护人员没有遇到麻烦。 它也看起来像你可能能够在运行configtest.sh之前手动设置环境variables; 我认为catalina.sh会把它们拿起来。


WARNING: Problem with directory行的WARNING: Problem with directory来自/etc/tomcat8/catalina.properties设置的类加载器path。 这可能只是Debian维护者留下的一些旧的东西…所以不要打乱旧的configuration? 目前上游并不全部,目前 已经讨论过了 。

这是一个漫长的传奇。 主要的问题是,Java社区和Linux社区创造了许多准标准,实践和惯例,而这些都在某种程度上与各方观点相矛盾。

可以很容易地集成java和linux,但你必须学习他们两个 ,你将不得不打破他们中的许多人。 如果你只知道一个(不pipe是java还是linux的世界),你都会发现自己处于一个清晰的世界,你必须让自己总是很肮脏。

你目前的问题是这次不是环境variables的问题,而是一个简单的“目录不存在”的麻烦。 最简单的办法就是避免这个警告,如果你只是简单地手工创build缺less的/ usr / share / tomcat8 / shared / classes目录(尽pipe它与linux风俗有一点矛盾)。

这个目录是标准tomcat jvm classloader所需的path,如果它仍然是空的,很可能不会伤害任何东西。

也许你可以检查一个Contents-amd64.gz这个目录是不是由另一个包创build的。 如果是,请安装该软件包。

我在Jessie LXC的openjdk-8-jdk上运行tomcat8 ,并且得到相同的WARNING ,没有任何不良影响。 我没有得到SEVERE 。 但我的ps行读取… -Dcatalina.base=/var/lib/tomcat8 -Dcatalina.home=/usr/share/tomcat8 -Djava.io.tmpdir=/tmp/tomcat8-tomcat8-tmp ….