【问题标题】:Unsupported major.minor version 51.0 in apache tomcat DataSourceFactoryapache tomcat DataSourceFactory 中不支持的 major.minor 版本 51.0
【发布时间】:2014-09-17 09:11:55
【问题描述】:

尽管阅读了所有相关帖子并按照我的想法理解了问题,但我对此没有任何想法。当我在 tomcat 中运行我的应用程序时,它会在初始化过程中使用我编写的自定义代码解密数据库密码。此解密实用程序传回 DataSourceFactory。

它会抛出这个错误:

原因:java.lang.UnsupportedClassVersionError: org/apache/tomcat/jdbc/pool/DataSourceFactory : Unsupported major.minor version 51.0

我已使用 JDK 1.6.0.31.1 将解密实用程序构建为 jar,并且此 jar 中所有已编译类文件中字节 6 和 7 的十六进制值是 Ox31 = 49 十进制,这表示 J2SE5 兼容。

此外,我的 tomcat lib 文件夹中唯一的 tomcat-jdbc 是 tomcat-jdbc-7.0.37.jar。打开这个并再次检查 DataSourceFactory 类中的 major.minor 字节位置显示相同的 Ox31。

我注意到该实用程序的依赖关系树中出现了一个 tomcat-jdbc-8.0.8.jar(我正在使用 maven 构建)。 8.0.8 中的 DataSourceFactory 在 major.minor 版本字节中确实有 Ox51,表示它是用 Java7 构建的。我删除了它并重建了它,但它没有任何区别,这并不奇怪,因为这肯定只是一个运行时问题。

我正在使用相同版本的 java 1.6.0.31 运行 tomcat。

尽管它不在 lib 文件夹中,但 Tomcat 似乎仍在尝试在运行时加载更新版本的 DataSourceFactory - 我已经打印出该文件夹中的每个类,并且在其他一些 jar 中没有隐藏的额外类或类似的东西。

知道我可能会尝试找到它从哪里加载吗? 提前致谢

【问题讨论】:

    标签: tomcat jdbc classloader


    【解决方案1】:

    哎呀,在 Intellij 的某个地方有一个 tomcat-jdbc-8.0.8,它被 IDE 中运行的 tomcat 拾取了。

    【讨论】:

      猜你喜欢
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 2015-10-28
      相关资源
      最近更新 更多