Java 在运行时替换导入类

Java 在运行时替换导入类,java,jdbc,ojdbc,Java,Jdbc,Ojdbc,我正在将数据库从11G移动到12C。应用程序当前在java5上运行,并使用ojdbc14.jar 当我移动到ojdbc6.jar时,我得到 java.lang.IllegalAccessError: tried to access class oracle.jdbc.driver.OracleResultSet 打开这两个jar文件并进行比较后,我发现OracleResultSet上的access修饰符在ojdbc6.jar中不再可用 问题:有没有一种方法可以在运行时通过java参数覆盖类中的

我正在将数据库从11G移动到12C。应用程序当前在java5上运行,并使用ojdbc14.jar 当我移动到ojdbc6.jar时,我得到

java.lang.IllegalAccessError: tried to access class oracle.jdbc.driver.OracleResultSet
打开这两个jar文件并进行比较后,我发现OracleResultSet上的access修饰符在ojdbc6.jar中不再可用

问题:有没有一种方法可以在运行时通过java参数覆盖类中的导入,而不是在类中更改并重新编译代码。 问题是,我不再有源代码,因此正在寻找覆盖在特定类中进行的导入的方法

我了解导致错误的位置或原因,需要知道是否有办法在运行时覆盖导入


import oracle.jdbc.driver.OracleResultSet;
import java.sql.ResultSet;
import java.sql.Clob;
import java.sql.PreparedStatement;
.
.other imports


我可以将导入更改为oracle.jdbc.OracleResultSet,这样就可以了。但由于源代码不再可用,我必须直接更改.class文件。

不,这是不可能的,可能还需要更改更多的代码。将会有一些使用OracleResultSet的代码需要更改


目前,反编译可能会起作用,但也许这段代码应该被一个新的实现所取代。将来应用更改/错误修复可能更容易

类文件中没有
import
(请参阅)。所以,根据Import语句,它们只是人类使用的编译时速记。不,你不能!一种方法是反编译类并对其进行修改,另一种方法是在缺少源代码的情况下开发新的应用程序。您可以使用来更改类文件。为什么?您使用的是
java.sql.ResultSet
中没有的功能吗?如果没有,这就是您应该导入的内容。如果你被指控维护一个没有源代码的应用程序,你就暗中有权编写替换源代码。@R\u格罗特:谢谢