2014-12-23 3 views
2

Я использую OpenCSV для чтения и записи файлов CSV. Он работал хорошо, пока я HSD установить более раннюю версию Java - то есть Java 6. После установки, мой код перестал работать:Чтение файлов с использованием OpenCSV

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/opencsv/CSVReader : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source)

enter image description here

enter image description here

+0

Duplicate: http://stackoverflow.com/questions/10382929/unsupported-major-minor-version-51-0 ?? – aioobe

ответ

4

Проверьте версию файла класса в вашем OpenCSV .jar зависимости, например:

javap -verbose -cp opencsv.jar com.opencsv.CSVReader | grep major 

Если это показывает версию новее, чем 50 (= новее Java 6), то вы не можете использовать эту банку. Вам нужно получить файл .jar, построенный с использованием Java 6 или старше. (Если он может быть построен с Java 6 вообще.)

Я только что подтвердил, что последняя версия исходного кода не компилируется с Java 6, , так как использует функции Java 7 (естественно). Но не так давно, по состоянию на август 2014 года проект все еще был на Java 5. Итак, если вы загрузите старую версию фляги, она должна работать.

Другими словами, поскольку вы понизили свою версию Java, , вам также необходимо понизить зависимость OpenCSV.

UPDATE

Из SourceForge, версия 2.3 содержит банку файл, который должен быть подходящим для вас:

$ javap -verbose -cp deploy/opencsv-2.3.jar au.com.bytecode.opencsv.CSVReader | grep major 
    major version: 50 

Обратите внимание, что имя пакета является немного отличается от текущей версии.

+0

Не могли бы вы указать ссылку для загрузки предыдущей версии opencsv. Я только что установил 2.1, и он снова не работает. –

+0

Я нашел его, см. Мое обновленное сообщение – janos

0

Когда OpenCSV был повышен до 3.0, было принято решение перейти на Java 7. Это было сделано по нескольким причинам. Основная причина заключалась в том, что основная причина в том, что основными исправлениями в 3.0 были поддержка ленивых проверок в Lambdas, которые находятся в Grails (возможно, Java 8), поэтому было запрошено скомпилировать код на Java 7, потому что это более оптимально для Grails , Я разрешил это, потому что Oracle объявила, что отказывается от поддержки Java 7 в 2015 году, а Java 5 & 6 давно не поддерживается. Кроме того, у меня было небольшое количество писем, когда я отправлял порт opencsv в java 7 (и только один для java 8 по какой-то причине), поэтому я чувствовал, что переход в java 7 был безопасным. Последнее заключалось в том, что я разрабатываю с использованием mac и больше не имею доступа к компилятору java 5, и мне действительно не понравилось выталкивать версию openssv на Java 5, построенную с использованием java 7.

Оглядываясь назад, это вызвало (вы третий, что я знаю, из-за этого не могу обновить), я бы оставил его на Java 5 и попросил пользователей Grails выполнить тест производительности, а сам я создаю opencsv в VM Ubuntu на моем mac. Но поскольку он отсутствует, я не хочу понижать рейтинг и, возможно, влиять на пользователей.

Если вы не можете обновить свой проект до java 7, у вас есть два варианта: во-первых, в репозиториях sourceforge и maven вы можете загрузить более старые версии. Таким образом, 2.4 и более ранние версии были построены с использованием java 5. Другой вариант заключается в том, что вы можете загрузить код и создать его самостоятельно. Благодаря KommradHomer текущая база кода совместима с Java 6 и будет строиться так же, как с компилятором Java 6 (вам просто нужно изменить файл pom).

0

Я вижу тот же выпуск.Пожалуйста, дайте мне знать, какую версию openCSV я могу использовать для совместимости с java-версией «1.6.0_22»? OpenCSV 2.3 не работает для меня.

+0

Попробуйте 2.2 или 2.4. Я боюсь, что 2,3, возможно, были непреднамеренно составлены с 1.7. –

+0

Спасибо .. Позвольте мне попробовать .. –

Смежные вопросы