在运行时替换 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 的代码应该更改。
目前反编译可能有效,但也许应该用新的实现替换此代码。将来应用更改/错误修复可能会更容易
我正在将数据库从 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 的代码应该更改。
目前反编译可能有效,但也许应该用新的实现替换此代码。将来应用更改/错误修复可能会更容易