错误提示:
‘oracle.jdbc.driver.OracleTypes’ is not public in ‘oracle.jdbc.driver’. Cannot be accessed from outside package
原因: 这是因为项目用到的oracle jdbc的jar包太老了,在ojdbc14.jar中,OracleTypes类是public的,而到了oracle 11g的驱动中,比如ojdbc5.jar ,ojdbc6.jar中,这个类源码如下:
class OracleTypes extends oracle.jdbc.internal.OracleTypes { private static final String _Copyright_2007_Oracle_All_Rights_Reserved_ = null; public static final String BUILD_DATE = "Fri_Aug_26_08:19:15_PDT_2011"; public static final boolean TRACE = false; OracleTypes() { } }
可以看到类的修饰符是default,default的表示只有同一个package下的类才能访问,所以报错。
解决办法:
第一种: 维护老项目,不能乱改,只能下载ojdbc14.jar版本的驱动。
第二种:替换为新版本的oracle 11g的驱动 ,将oracle.jdbc.OracleTypes 类替换 oracle.jdbc.driver.OracleTypes。