Caused by: java.lang.NoSuchMethodError: oracle.i18n.text.converter.CharacterConverterOGS.getInstance(I)Loracle/sql/converter/CharacterConverters; at oracle.sql.converter.CharacterConverterFactoryOGS.make(CharacterConverterFactoryOGS.java:48) at oracle.sql.CharacterSetWithConverter.getInstance(CharacterSetWithConverter.java:92) at oracle.sql.CharacterSetFactoryThin.make(CharacterSetFactoryThin.java:123) at oracle.sql.CharacterSet.make(CharacterSet.java:441) at oracle.jdbc.driver.DBConversion.init(DBConversion.java:152)[174:ojdbc14:10.2.0.0] at oracle.jdbc.driver.DBConversion.<init>(DBConversion.java:116)[174:ojdbc14:10.2.0.0] at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:892)[174:ojdbc14:10.2.0.0] at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:268)[174:ojdbc14:10.2.0.0] at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)[174:ojdbc14:10.2.0.0] at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)[174:ojdbc14:10.2.0.0] at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)[174:ojdbc14:10.2.0.0] at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)[174:ojdbc14:10.2.0.0] at java.sql.DriverManager.getConnection(DriverManager.java:571)[:1.7.0_79] at java.sql.DriverManager.getConnection(DriverManager.java:215)[:1.7.0_79] at com.cyou.ehr.common.HRJdbcUtil.query(HRJdbcUtil.java:26)[211:cyou-esb-app-ehr:1.0.0.SNAPSHOT] at com.cyou.ehr.rest.EhrRestService.syncEhrDept(EhrRestService.java:51)[211:cyou-esb-app-ehr:1.0.0.SNAPSHOT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79] at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79] at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:188) at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104) ... 41 more
这个问题调查了两天,终于解决了,网上调查很久,也没有一个正确答案,最后无意中发现的。我的工程原来连接的oracle11g,所以项目中有一个jar包名叫orai18n.jar,但是后来需要连接另外一个oracle,这个oracle是oracle10,获取connection时,总是报上面这个错误,最后发现,oracle11g之前的jar不叫orai18n.jar,而是nls_charset12.jar,换成这个就可以了。
oracle 11g中没有nls_charset12.jar,取而代之的是orai18n.jar,所以要找nls_charset12.jar可以去11g之前的版本找。路径在\oracle\product\10.2.0\db_1\jdbc\lib下。ojdbc6.jar支持1.5和1.6 ojdbc14支持1.4和1.5