Есть ли разница между классами, скомпилированными с Java 1.5 и 1.5.0_06 - PullRequest
0 голосов
/ 14 июня 2011

Я скомпилировал класс с Java версии 1.5.

Когда я развернул его на сервере, это дало мне ошибку неверной версии.

Если я скомпилировал его с Java версии 1.5.0_06что имеет значение, если на сервере установлена ​​java версии 1.5.0_06

1. Неужели последнее число в версии также имеет значение ??

2. javap -verbose <i>ClassName</i> дает мне второстепенноеи основная версия, но как узнать, с каким обновлением скомпилирован класс ??

Спасибо, Сандип

Ответы [ 3 ]

1 голос
/ 14 июня 2011

JRE / JDK 1.5.0_06 - это реализация Java 1.5 (или Java 5, в зависимости от того, какой это день недели).

Так что нет никакой разницы, классы, скомпилированные для Java1.5 должен нормально работать на этой версии.

Версия класса не скажет вам, с каким обновлением JDK был скомпилирован класс, и эта информация также не должна быть релевантной.

0 голосов
/ 14 июня 2011

1. Последний номер в версии также имеет значение ??

Нет.Это не должно не.Тем не менее, я столкнулся с проблемами во время выполнения из-за незначительных различий в версиях.При дальнейшем расследовании выяснилось, что это связано с неполным пониманием API.Разработчик ожидал, что obj.getClass().getFields() вернет поля в порядке объявления, и это работало так в одной версии.В более новом обновлении он возвращал поля в другом порядке.API ясно говорит, что «элементы в возвращаемом массиве не отсортированы и не в каком-либо определенном порядке». Мораль истории : Всегда разрабатывайте, тестируйте и развертывайте на одной и той же версии Java.

2.javap -verbose ClassName дает мне младшую и основную версию, но как узнать, с каким обновлением скомпилирован класс ?? ?? 1013 *

Вы не можете.Файл класса даже не несет эту информацию.Смотрите формат файла класса: http://en.wikipedia.org/wiki/Java_class_file

Проблема, которую вы получаете, выглядит странно.Пожалуйста, опубликуйте свое решение, если оно у вас есть.

0 голосов
/ 14 июня 2011

Скомпилируйте класс (любой класс) с JDK 1.5 и JDK 1.5.0_06. Затем сравните основную / вспомогательную версию версии, скомпилированной с 1.5, с версией, скомпилированной с 1.5.0_06. Если они идентичны, вы должны нормально запустить класс, скомпилированный с 1.5, на сервере, который использует Java 1.5.0_06. В противном случае вы не можете.

...