在运行时替换 import class

Replace import class during runtime

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

java.lang.IllegalAccessError: tried to access class oracle.jdbc.driver.OracleResultSet

打开两个 jar 文件并进行比较后,我发现 OracleResultSet 上的访问修饰符在 ojdbc6.jar

中不再可用

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

中进行的导入

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


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

我可以将导入更改为 oracle.jdbc.OracleResultSet,它将 work.But 我将不得不直接更改 .class 文件,因为源代码不再可用。

不,那不可能,可能应该更改更多代码。将有一些使用 OracleResultSet 的代码应该更改。

目前反编译可能有效,但也许应该用新的实现替换此代码。将来应用更改/错误修复可能会更容易