如何解决从main调用时,opencsv引发异常,并且存在module-info.java
我想在使用Java模块系统,用Java 14构建的opencsv中使用project。因此它具有一个module-info.java文件。
从单元测试启动时,对opencsv中方法的调用可以正常工作,但从Main.main()方法中启动时,则引发异常。 如果我删除module-info.java文件,则在两种情况下该方法都可以正常工作。
module-info文件很简单,但可能是错误的:
module opencsvDemo {
requires opencsv;
opens demo;
}
从Main.main()运行时,我得到
Exception in thread "main" java.lang.NoClassDefFoundError: java/sql/Date
at commons.beanutils@1.9.4/org.apache.commons.beanutils.ConvertUtilsBean.registerOther(ConvertUtilsBean.java:730)
at commons.beanutils@1.9.4/org.apache.commons.beanutils.ConvertUtilsBean.deregister(ConvertUtilsBean.java:602)
at commons.beanutils@1.9.4/org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:161)
at opencsv@5.2/com.opencsv.bean.ConverterPrimitiveTypes.<init>(ConverterPrimitiveTypes.java:88)
at opencsv@5.2/com.opencsv.bean.AbstractMappingStrategy.determineConverter(AbstractMappingStrategy.java:739)
at opencsv@5.2/com.opencsv.bean.HeaderColumnNameMappingStrategy.loadAnnotatedFieldMap(HeaderColumnNameMappingStrategy.java:155)
at opencsv@5.2/com.opencsv.bean.AbstractMappingStrategy.loadFieldMap(AbstractMappingStrategy.java:405)
at opencsv@5.2/com.opencsv.bean.AbstractMappingStrategy.setType(AbstractMappingStrategy.java:343)
at opencsv@5.2/com.opencsv.bean.util.OpencsvUtils.determineMappingStrategy(OpencsvUtils.java:77)
at opencsv@5.2/com.opencsv.bean.CsvToBeanBuilder.build(CsvToBeanBuilder.java:210)
at opencsvDemo/demo.CsvGetter.get(CsvGetter.java:23)
at opencsvDemo/demo.Main.main(Main.java:13)
是我的module-info.java文件中的错误,还是应该在其他地方查看?
解决方法
您可以尝试使用
requires java.sql;
在您的模块描述符中,以确保正确解析了具有预期类的模块。
如果代码编译时没有该描述符,则必须有另一个模块负责。您将不得不识别它并进一步决定要选择的路径。可能是由于项目的依赖关系带来了带有相同软件包的自动模块,这也可能进一步导致拆分软件包问题。在这种情况下,寻找支持Java升级的库更新等可能会有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。