Версии Twisted класса хорошо работают со старой Java-VM, а не с новой Java-VM.Это регулярно? - PullRequest
0 голосов
/ 23 сентября 2019

Казалось бы, иерархия классов со смешанными старыми (очень старыми) более новыми классами хорошо работает в Java 1.4.2, а не в более новой VM.Я хотел бы знать, сталкивался ли кто-нибудь с той же самой проблемой.

Я работаю со старым проектом, есть скомпилированный класс с иерархией, созданной следующим образом:

Базовый класс (Foo1), скомпилированный с помощью промежуточного класса java 1.4 (Foo2), которыйextends Foo1, скомпилированный с помощью промежуточного класса java 1.1 (Foo3), который расширяет Foo2, скомпилированный с hava 1.4 Мой класс (Bar), расширяющий Foo3, в моей папке src, то есть для компиляции и выполнения.

Если язапустить мой проект с Java 1.4, он работает хорошо.Если я запускаю свой проект с Java 1.6 или новее, он возвращает недопустимую подпись для некоторых методов в классе Foo2.

В частности: в следующей строке:

Bar bar = Bar.getBarFromId(currentId);

получить исключение

java.lang.VerifyError: (class: Foo2, method: setIdAzienda signature: (Ljava/lang/String;)V) Incompatible object argument for function call

Если я очищаю и собираю свой проект, в том же месте у меня появляется следующее исключение:

java.lang.VerifyError: (class: Foo2, method: setAziendaKey signature: (Ljava/lang/String;)V) Incompatible object argument for function call

В третий раз ошибка возникает в другом методе:

java.lang.VerifyError: (class: Foo2, method: setOrdinamFaldone signature: (C)V) Incompatible object argument for function call

Метод, который я вызываю (getBarFromId), следующий:

public static Foo3 getBarFromId(String  id) {
    if (id == null)
        return null;
    try {
        return (Foo3) Foo1.readElementWithKey(Foo3.class, id);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

Но в трассировке стека исключений не упоминается ни одна строка внутри этой подпрограммы.

NB:Foo1, Foo2 и Foo3 хранятся в банке, я не владелец.JAR-файл очень большой, и я не знаю, является ли это единственным случаем, когда у меня возникает такая проблема или есть много классов для перекомпиляции (у меня нет источников, и иногда декомпиляторы не могут извлечь все методы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...