Заменить класс импорта во время выполнения - PullRequest
0 голосов
/ 30 сентября 2019

Я перемещаю базу данных с 11G на 12C. Приложение в настоящее время работает на java5 и использует ojdbc14.jar. Когда я перехожу на ojdbc6.jar, я получаю

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

. После открытия обоих jar-файлов и сравнения я вижу, что модификатор доступа в OracleResultSet больше не доступенв 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, так как исходный код нетбольше в наличии.

1 Ответ

0 голосов
/ 30 сентября 2019

Нет, это невозможно, и, вероятно, необходимо изменить код. Будет некоторый код, который использует OracleResultSet, который должен быть изменен.

На данный момент декомпиляция может работать, но, возможно, этот код следует заменить новой реализацией. Возможно, в будущем будет легче применить изменения / исправления

...