【发布时间】:2014-06-01 11:06:54
【问题描述】:
我编写了一个使用与 Oracle 数据库的连接的 JSF 应用程序。我在本地 Tomcat(7.0 版)上验证了一切正常。然后,当使用我不管理的 Tomcat 7 部署到服务器时,我收到以下错误:
Caused by:
java.lang.NoClassDefFoundError - Could not initialize class oracle.jdbc.driver.OracleDriver
在我的本地系统上,我在 CATANIA_HOME/lib 中有 Oracle JDBC 驱动程序(版本 11.2.0.4)。根据我的部署服务器的信息,它们使用完全相同的驱动程序。
目前我正在使用一个非常基本的 JSF 软件,除了执行之外什么都不做
Class.forName("oracle.jdbc.driver.OracleDriver");
在页面加载时。同样,在我的本地系统上工作正常。在部署服务器上失败。我想也许他们错过了包含驱动程序,尽管他们写了他们把它放进去了。所以我将 ojdbc5.jar 添加到 WEB-INF/lib。然而,我得到了一个 SealingViolation,这似乎表明类加载器找到了两个包含 oracle 驱动程序的资源。
如果你能给我一些关于如何解决这个问题的提示,我会非常高兴。
谢谢
【问题讨论】:
-
我已经试过了,没用。 Stills 引发了密封违规(可能是因为我也无法解封部署在 Tomcat 上的那个)此外......我会更高兴知道为什么我无法加载 Oracle 驱动程序,尽管 jar 是那里
-
这听起来像是服务器端的错误配置。显然,没有为您的 webapp 加载 jar,并且需要针对服务器密钥库密封自定义 jar(可能 Tomcat 正在使用 SecurityManager 选项运行)。无论如何,如果你不能自己管理服务器,他们必须解决这个问题。
-
假设它是 unix - 请您的支持团队为您提供
lsof -p <pid>的输出,这将向您显示 tomcat 打开的每个 JAR - 这是我的一个随机示例/apps/Tomcat/apache-tomcat-7.0.42/endorsed/ogclient.jar