почему компилятор java 1.4 не жалуется на стороннюю библиотеку, скомпилированную с компилятором 1.5? - PullRequest
1 голос
/ 07 мая 2010

Почему компилятор java 1.4 не жалуется на стороннюю библиотеку, скомпилированную с компилятором 1.5? Проблема возникает во время выполнения UnsupportedClassVersionError.

1 Ответ

0 голосов
/ 07 мая 2010

Начиная с Java 1.5, формат файла класса был немного изменен (например, для сохранения аннотаций). См. Параметр -target в документации компилятора . Java 1.5 и более поздние JVM поддерживают оба формата файлов классов; Виртуальные машины Java 1.4 (естественно) поддерживают только более ранний формат.

Что касается того, почему компилятор не жалуется: компилятору нужно только позаботиться о том, достаточно ли у него информации для правильной компиляции файлов, которые его просили скомпилировать; не может ли он запустить их правильно. JVM нужно беспокоиться о правильном запуске классов. По-видимому, если вы видите, что компилятор 1.4 с радостью ссылается на классы 1.5 из кода, который он компилирует, изменение формата не повлияет на информацию, необходимую компилятору для компиляции кода в стиле 1.4. Я не могу сразу найти ссылку, гарантирующую такое поведение, но если это то, что вы видите ...

...