2011-03-04 82 views
2

我们使用Oracle 11g ojdbc6.jar时会收到以下错误:警告:错误而注册的Oracle JDBC诊断性的MBean

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) 

许多论坛和博客调查后,我们还没有发现任何最终的解决方案呢。所以,我们想在这里分享解决方法。

回答

3

根据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错误。

+0

这可能无法解决所有人的问题,因为它不适合我。链接到Oracle下载无效。 – jedison 2015-07-09 16:58:32

0

我有完全相同的问题。我不知道我的环境是否一样。

在我的环境中,我在同一个应用程序中同时使用了jdbc和jboss jar。 我相信,但没有验证,在jboss罐子里的东西是挂钩 到类加载器并导致问题。

我解决了这个问题,只加载了ojdbc驱动jar,创建了我的 数据库实例,然后加载了jboss jar。

0

我正在使用Maven,我的项目使用的是log4j 1.2.15。无论出于何种原因,1.2.15都依赖于jms 1.1jmxtools 1.2.1jmxri 1.2.1

jmxri 1.2.1包含版本StandardMBean,其构造函数采用StandardMBean(不是java.lang.Class)。虽然我没有做广泛的测试来证实这个假设,但我相信这是正在使用的类的版本,也是错误的最终原因。

看起来好像log4j 1.2.14没有这些依赖关系。所以我退缩到1.2.14,并把它们拿出来。

+0

对我来说,使用log4j 1.2.14发生错误 – jedison 2015-07-09 16:30:37