java - 从 main 调用时 opencsv 抛出异常,并且存在 module-info.java

标签 java opencsv java-module java-platform-module-system java-14

我想使用opencsvproject这是用 Java 14 构建的,使用 Java 模块系统。所以它有一个 module-info.java 文件。

从单元测试启动时,对 opencsv 中方法的调用工作正常,但从 Main.main() 方法启动时会引发异常。 如果我删除 module-info.java 文件,该方法在这两种情况下都可以正常工作。

模块信息文件很简单,但可能是错误的:

module opencsvDemo {
    requires opencsv;
    opens demo;
}

当从 Main.main() 运行时,我得到

Exception in thread "main" java.lang.NoClassDefFoundError: java/sql/Date
    at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3a5955575755544914585f5b544f4e5356497a0b1403140e" rel="noreferrer noopener nofollow">[email protected]</a>/org.apache.commons.beanutils.ConvertUtilsBean.registerOther(ConvertUtilsBean.java:730)
    at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ee8d81838381809dc08c8b8f809b9a87829daedfc0d7c0da" rel="noreferrer noopener nofollow">[email protected]</a>/org.apache.commons.beanutils.ConvertUtilsBean.deregister(ConvertUtilsBean.java:602)
    at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="fa99959797959489d4989f9b948f8e939689bacbd4c3d4ce" rel="noreferrer noopener nofollow">[email protected]</a>/org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:161)
    at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6807180d060b1b1e285d465a" rel="noreferrer noopener nofollow">[email protected]</a>/com.opencsv.bean.ConverterPrimitiveTypes.<init>(ConverterPrimitiveTypes.java:88)
    at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="365946535855454076031804" rel="noreferrer noopener nofollow">[email protected]</a>/com.opencsv.bean.AbstractMappingStrategy.determineConverter(AbstractMappingStrategy.java:739)
    at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="573827323934242117627965" rel="noreferrer noopener nofollow">[email protected]</a>/com.opencsv.bean.HeaderColumnNameMappingStrategy.loadAnnotatedFieldMap(HeaderColumnNameMappingStrategy.java:155)
    at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1c736c79727f6f6a5c29322e" rel="noreferrer noopener nofollow">[email protected]</a>/com.opencsv.bean.AbstractMappingStrategy.loadFieldMap(AbstractMappingStrategy.java:405)
    at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b7d8c7d2d9d4c4c1f7829985" rel="noreferrer noopener nofollow">[email protected]</a>/com.opencsv.bean.AbstractMappingStrategy.setType(AbstractMappingStrategy.java:343)
    at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7f100f1a111c0c093f4a514d" rel="noreferrer noopener nofollow">[email protected]</a>/com.opencsv.bean.util.OpencsvUtils.determineMappingStrategy(OpencsvUtils.java:77)
    at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3d524d58535e4e4b7d08130f" rel="noreferrer noopener nofollow">[email protected]</a>/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 升级的库更新等可能会有所帮助。

关于java - 从 main 调用时 opencsv 抛出异常,并且存在 module-info.java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64293538/

相关文章:

java - 桌面图形用户界面框架

java - OpenCSV 将 csv 转换为嵌套 bean

java - BeanToCsv不写入CSV文件

java - 使用 Java 9 模块,多个模块是否能够导出同一个包?

java - spring.core 的这个模块定义有什么问题?

java - 捕获空异常

java - 在 ubuntu 14.04 中将 open jdk 8 降级为 7

java - JPA:将查询结果导出为CSV格式

java - JDK11迁移: Compilation error shown in Eclipse 2018-12 but code runs fine

java - 预先存在的 vb.net/sql 服务器桌面 crud 应用程序的智能手机可访问性的选择