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

从main调用opencsv时抛出异常,并且module-info.java存在,java,opencsv,java-module,java-platform-module-system,java-14,Java,Opencsv,Java Module,Java Platform Module System,Java 14,我想在一个用Java14构建的系统中使用Java模块系统。所以它有一个module-info.java文件 从单元测试启动opencsv中的方法调用可以正常工作,但从Main.Main()方法启动时会引发异常。 如果删除module-info.java文件,该方法在这两种情况下都可以正常工作 模块信息文件很简单,但可能是错误的: 模块opencsvDemo{ 需要opencsv; 打开演示; } 从Main.Main()运行时,我得到 线程“main”java.lang.NoClassDefF

我想在一个用Java14构建的系统中使用Java模块系统。所以它有一个module-info.java文件

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

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

模块opencsvDemo{
需要opencsv;
打开演示;
}
从Main.Main()运行时,我得到

线程“main”java.lang.NoClassDefFoundError中的异常:java/sql/Date 在下议院。beanutils@1.9.4/org.apache.commons.beanutils.ConvertUtilsBean.registerOther(ConvertUtilsBean.java:730) 在下议院。beanutils@1.9.4/org.apache.commons.beanutils.ConvertUtilsBean.deregister(ConvertUtilsBean.java:602) 在下议院。beanutils@1.9.4/org.apache.commons.beanutils.ConvertUtilsBean.(ConvertUtilsBean.java:161) 在opencsv@5.2/ConverterPrimitiveTypes.java:88 在opencsv@5.2/determineConverter(AbstractMappingStrategy.java:739) 在opencsv@5.2/HeaderColumnNameMappingStrategy.loadAnnotatedFieldMap(HeaderColumnNameMappingStrategy.java:155) 在opencsv@5.2/com.opencsv.bean.AbstractMappingStrategy.loadFieldMap(AbstractMappingStrategy.java:405) 在opencsv@5.2/com.opencsv.bean.AbstractMappingStrategy.setType(AbstractMappingStrategy.java:343) 在opencsv@5.2/opencsv.bean.util.OpencsvUtils.determineMappingStrategy(OpencsvUtils.java:77) 在opencsv@5.2/com.opencsv.bean.CsvToBeanBuilder.build(CsvToBeanBuilder.java:210) 位于opencsvDemo/demo.CsvGetter.get(CsvGetter.java:23) 在opencsvDemo/demo.Main.Main(Main.java:13) 是我的module-info.java文件中的错误,还是我应该查看其他地方?

您可以尝试使用

requires java.sql;
在模块描述符中,以确保正确解析具有预期类的模块


如果编译的代码没有该描述符,则必须有另一个模块负责该操作。你必须确定它,并进一步决定要选择的道路。这可能是由于您的项目的依赖关系带来了具有相同包的自动模块,这也可能进一步导致拆分包问题。在这种情况下,寻找支持Java升级的库更新等可能会有所帮助。

这很有帮助,谢谢!但我不明白为什么,以及我通常如何知道一个程序需要什么。我的演示项目(在问题中链接)仅依赖于opencsv和junit。显然opencsv需要java.sql;我不明白为什么。
requires java.sql;