首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OpenCSV读取文件

使用OpenCSV读取文件
EN

Stack Overflow用户
提问于 2014-12-23 21:33:48
回答 3查看 8.1K关注 0票数 3

我使用OpenCSV进行CSV文件的读写。在我安装早期版本的Java (即Java 6 )之前,它一直工作正常。安装之后,我的代码停止工作:

线程“java.lang.UnsupportedClassVersionError: com/opencsv/CSVReader :不受支持的major.minor版本51.0 at java.lang.ClassLoader.defineClass1(原生方法) at java.lang.ClassLoader.defineClassCond(未知源) at java.lang.ClassLoader.defineClass(未知源)”中的异常

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-23 22:00:00

检查OpenCSV .jar依赖项中类文件的版本,例如:

代码语言:javascript
复制
javap -verbose -cp opencsv.jar com.opencsv.CSVReader | grep major

如果这显示的版本比Java 6更新50 (=更新),那么您就不能使用这个jar。您需要获得一个用Java6或更高版本构建的.jar文件。(如果它完全可以用Java 6构建的话)。

我刚刚证实了最新版本的源代码没有使用Java 6进行编译,因为它使用了Java 7特性(当然)。但是不久以前,截至2014年8月,这个项目还在Java 5上,所以如果你下载一个更旧版本的jar,它应该可以工作。

换句话说,由于您降低了Java版本的级别,所以还需要降低您的OpenCSV依赖性。

更新

SourceForge中,版本2.3包含一个适合您的jar文件:

代码语言:javascript
复制
$ javap -verbose -cp deploy/opencsv-2.3.jar au.com.bytecode.opencsv.CSVReader | grep major
  major version: 50

请注意,包名与当前版本略有不同。

票数 4
EN

Stack Overflow用户

发布于 2015-09-14 18:58:58

当OpenCSV升级到3.0时,决定升级到Java7,这有几个原因。主要原因是,最大的原因是3.0中的主要修复是支持Grails (可能是Java 8)中的Lambdas中的延迟检查,因此请求在Java 7中编译代码,因为它对Grails更理想。我允许这样做,因为甲骨文在2015年宣布放弃对Java 7的支持,而Java 5和6长期以来一直不受支持,而且我收到了少量电子邮件,询问我何时将opencsv移植到java 7(出于某种原因,只有一封是针对java 8的),所以我觉得迁移到java 7是安全的。最后一个原因是,我使用mac进行开发,不再能够访问java 5编译器,我对推出使用Java 7构建的java 5版本的opencsv并不满意。

事后看来(您是我所知道的第三个不能升级的问题),我会把它留在Java 5上,并要求Grails用户执行性能测试,并在我的mac上的Ubuntu中构建opencsv。但是由于它已经发布,我不想降级,也不想影响用户。

如果您不能将项目升级到java 7,那么您确实有两个选项:第一个选项是,在sourceforge和maven存储库上,您可以下载旧版本。因此,2.4和更早版本是使用java 5构建的。另一个选项是您可以下载代码并自己构建它。多亏了KommradHomer,当前的代码库与Java6兼容,并且将像使用Java6编译器那样进行构建(您只需要更改pom文件)。

票数 1
EN

Stack Overflow用户

发布于 2015-09-21 11:53:29

我也看到了同样的问题。请让我知道我可以使用哪个版本的openCSV与1.6.0_22版本兼容?OpenCSV 2.3不适合我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27628336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档