Подтвердить что ты не робот

Неподдерживаемая версия major.minor 51.0 (не удалось загрузить класс org.postgresql.Driver)

Создал веб-приложение с помощью maven и развернул его на герою. Все работает, но когда я вызываю действие, которое использует драйвер postgresql-9.2-1002.jdbc4, я получаю:

java.lang.UnsupportedClassVersionError: org/postgresql/Driver : Unsupported major.minor version 51.0 (unable to load class org.postgresql.Driver)

Я знаю, что проблема в том, что я использую jdk 7 в моей среде разработки, а более низкая версия работает на героку (по крайней мере, я так думаю). Мой первый вопрос: почему другие действия не дают этой ошибки, только действия, которые используют драйвер postqresql, дают эту проблему, остальная часть приложения работает нормально? Другая вещь, которую я сделал, - загрузить jdk 6, а затем добавить ее в мой путь построения проекта, а затем настроить соответствие компилятора eclipse 1.6, но даже тогда у меня такая же проблема. Как я могу это решить?

4b9b3361

Ответ 1

Решение заключается в использовании копии драйвера базы данных, которая скомпилирована для JDK 6.

Кажется, что у вас не проблема с кодом приложения, потому что сработали изменения сборки. (В частности, изменение уровня соответствия. Я не думаю, что добавление JDK к (регулярному) пути сборки будет иметь значение.)

Но, конечно, это не будет иметь никакого значения для драйвера базы данных... потому что вы не компилируете это.


Однако, согласно странице загрузки, postgresql-9.2-1002.jdbc4 должен быть совместим с Java 6, а также с 7. Так что, возможно, вы получили JAR из другого места... или путем компиляции из источника с целью Java 7.

UPDATE. Я могу подтвердить, что JAR на сайте загрузки имеет класс драйвера, версия байт-кода которого 50.0 не 51.0. Я предлагаю вам скачать и использовать новую копию оттуда.

Ответ 2

Для java 6 используйте:

postgresql-9.2-1004-jdbc4.jar 
postgresql-9.3-1100-jdbc4.jar 

Для java 7 используйте:

postgresql-9.2-1004-jdbc41.jar 
postgresql-9.3-1100-jdbc41.jar 

Ответ 3

Если вы используете maven, 9.2-1002-jdbc4 версия в центральном репозитории была скомпилирована с использованием 1.7 цели. Используйте предыдущую версию до тех пор, пока она не будет исправлена.

Ответ 4

Кажется, что это было разрешено с помощью последнего идентификатора сборки 1003:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.2-1003-jdbc4</version>
</dependency>

Ответ 5

Лучший способ - установить более высокую версию java, с которой связано ваше приложение. Предположим, что если у меня есть приложение с компиляцией с Jre 1.6, мне нужна 1.6 или более высокая версия Jre 1.6, и одна вещь заключается в том, что

или

Просто скомпилируйте свой файл класса. Я имею в виду ваш файл application.java со стандартным Jre, который у вас есть с java и Just Run на том же самом.

или третий вариант.

Загрузите эту JRE и установите эту версию JRE на свой компьютер.

Ответ 6

Я столкнулся с этой проблемой, а также ClassNotFoundException для загрузки проблемы драйвера JDBC. Решение состоит в том, чтобы получить правильную версию баннера postgres из http://jdbc.postgresql.org/download.html#jdbcselection. Если вы используете Maven, соответствующим образом добавьте версию своей зависимости.

Ответ 7

Альтернативой замене вашего Java 6-несовместимого драйвера Postgres на альтернативную версию, совместимую с Java 7 (как рекомендовано большинством других ответов), является использование Heroku Java 7 для компиляции и запуска вашего приложения. Если вы используете JDK 7 для разработки, это, как вы говорите, поможет избежать других несовместимостей.

Для этого следуйте этих инструкций на Heroku Devcenter. Здесь резюме:

  • Создайте файл с именем system.properties в базовом каталоге приложения.
  • Добавьте свойство java.runtime.version=1.7 в файл, то есть:

    java.runtime.version=1.7
    
  • Зафиксируйте файл system.properties и нажмите на Heroku.

Ответ 8

Имел ту же проблему

На этой странице http://jdbc.postgresql.org/download.html

Раздел - Текущая версия

Детали о версиях jvm и драйверах jdbc postgres помогли мне разобраться.