我从wheezy-backports安装了tomcat8软件包。 我使用默认/未经修改的安装与以下期望:
/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
显然有些问题:)
/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 ….