【问题标题】:tomcat server.xml environment variable using setenv.sh throw exception使用 setenv.sh 的 tomcat server.xml 环境变量抛出异常
【发布时间】:2021-07-19 23:21:09
【问题描述】:

我正在尝试使用环境变量在 server.xml 中设置一些值。从这个how to set org.apache.tomcat.util.digester.EnvironmentPropertySource in tomcat,我在 /tomcat/bin 中创建 setenv.sh 文件:

CATALINA_OPTS="$CATALINA_OPTS -Dorg.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.EnvironmentPropertySource"

当我运行 tomcat 时,我得到了这个异常:

org.apache.tomcat.util.digester.Digester.<clinit> Unable to load property source[org.apache.tomcat.util.digester.EnvironmentPropertySource].

我对tomcat真的很陌生,所以我不知道这意味着什么。我不确定它是否与setenv.sh 有关。如果没有setenv.sh 文件,我看不到同样的异常。我试图研究这个主题,但没有找到很多信息。

谁能回答为什么会这样?

编辑:这是来自日志文件的整个堆栈跟踪

26-Apr-2021 19:32:44.857 SEVERE [main] org.apache.tomcat.util.digester.Digester.<clinit> Unable to load property source[org.apache.tomcat.util.digester.EnvironmentPropertySource].
 java.lang.ClassNotFoundException: org.apache.tomcat.util.digester.EnvironmentPropertySource
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.apache.tomcat.util.digester.Digester.<clinit>(Digester.java:97)
        at org.apache.catalina.startup.Catalina.createStartDigester(Catalina.java:272)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:528)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:644)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:311)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:494)

26-Apr-2021 19:32:44.859 SEVERE [main] org.apache.tomcat.util.digester.Digester.<clinit> Unable to load property source[org.apache.tomcat.util.digester.EnvironmentPropertySource].
 java.lang.ClassNotFoundException: org.apache.tomcat.util.digester.EnvironmentPropertySource
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.apache.tomcat.util.digester.Digester.<clinit>(Digester.java:97)
        at org.apache.catalina.startup.Catalina.createStartDigester(Catalina.java:272)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:528)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:644)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:311)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:494)

【问题讨论】:

  • 您的日志 (catalina.&lt;date&gt;.log) 应包含有关 Tomcat 无法加载 EnvironmentPropertySource 的原因的更多信息。您可以在您的问题中添加 吗?

标签: java tomcat kubernetes kubernetes-helm


【解决方案1】:

org.apache.tomcat.util.digester.EnvironmentPropertySource 类自 Tomcat 7.0.108Tomcat 8.5.65Tomcat 9.0.45 起可用。您必须运行旧版本。

【讨论】:

  • 谢谢。我刚刚发现这个类由于某种原因从 8.5.0 到 8.5.51 不可用(来自 tomcat github)。除了更新 tomcat 版本,我还有其他选择吗? (github.com/apache/tomcat/tree/8.5.51/java/org/apache/tomcat/…)
  • 由于最后一个 security vulnerability 在 8.5.63 中被更正,最好的选择是升级:你只需要用新的 jar 替换旧的 jar。该类在 8.5.46 之前不存在(参见答案中发行说明的链接)。
猜你喜欢
  • 1970-01-01
  • 2023-03-05
  • 2012-08-09
  • 2015-10-21
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
相关资源
最近更新 更多