警告:注册 Oracle JDBC Diagnosability MBean 时出错

tot*_*ing 4 java jdbc oracle11g

使用 Oracle 11g ojdbc6.jar 时出现以下错误:

WARNING: Error while registering Oracle JDBC Diagnosability MBean.
java.lang.NoSuchMethodError:
javax.management.StandardMBean.<init>(Ljava/lang/Class;Z)V
        at oracle.jdbc.driver.OracleDiagnosabilityMBean.<init>(OracleDiagnosabilityMBean.java:34)
        at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:342)
        at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:199)
Run Code Online (Sandbox Code Playgroud)

在很多论坛和博客上调查之后,我们还没有找到任何最终的解决方案。所以,我们想在这里分享解决方法。

tot*_*ing 5

根据 Oracle 文档,JDBC 诊断性管理特性引入了一个 MBean,oracle.jdbc.driver.OracleDiagnosabilityMBean。此 MBean 提供启用和禁用 JDBC 日志记录的方法,您可以在此处找到它:https : //docs.oracle.com/cd/B28359_01/java.111/b31224/diagnose.htm

而且,驱动程序使用 java.util.logging 进行日志记录,实际上在我们的情况下,我们并不真正需要使用该信息,因此决定禁用日志并且不再发生警告。

如何禁用驱动程序的日志(oracle.jdbc):

  • 默认情况下,JRE 使用 JRE_HOME\lib\logging.properties 中的默认属性文件,因此编辑该文件并添加以下信息:
    • oracle.jdbc.level=OFF
  • 或者为 java.util.logging 配置您自己的属性日志文件
    • java -Djava.util.logging.config.file=/YourConfig.properties
    • 将 oracle.jdbc.level=OFF 添加到 YourConfig.properties

它对我们有用,上面没有任何 WANRING 错误。