JavaFX项目中OpenCSV类名无法解析的问题求助
JavaFX项目中无法解析OpenCSV类名的问题
我在JavaFX项目里尝试使用OpenCSV,但一直无法解析它的类名。StackOverflow上的相关方案都试过了,没有效果。已经执行过清理重建操作,删除过.m2文件夹,也在终端运行了mvn clean install命令。pom.xml中已经添加了OpenCSV依赖,项目设置的依赖配置里也能看到它,完全搞不懂为什么还是无法解析类名。


pom.xml 内容
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.epls</groupId> <artifactId>DeliverySupplies</artifactId> <version>1.0-SNAPSHOT</version> <name>DeliverySupplies</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <junit.version>5.9.2</junit.version> </properties> <dependencies> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>17.0.6</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-fxml</artifactId> <version>17.0.6</version> </dependency> <dependency> <groupId>org.controlsfx</groupId> <artifactId>controlsfx</artifactId> <version>11.1.2</version> </dependency> <dependency> <groupId>com.dlsc.formsfx</groupId> <artifactId>formsfx-core</artifactId> <version>11.6.0</version> <exclusions> <exclusion> <groupId>org.openjfx</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.kordamp.ikonli</groupId> <artifactId>ikonli-javafx</artifactId> <version>12.3.1</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.7.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> <plugin> <groupId>org.openjfx</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>0.0.8</version> <executions> <execution> <!-- Default configuration for running with: mvn clean javafx:run --> <id>default-cli</id> <configuration> <mainClass>com.epls.deliverysupplies.DeliveryApp </mainClass> <launcher>app</launcher> <jlinkZipName>app</jlinkZipName> <jlinkImageName>app</jlinkImageName> <noManPages>true</noManPages> <stripDebug>true</stripDebug> <noHeaderFiles>true</noHeaderFiles> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
module-info.java 内容
module com.example.delivorysupplies { requires javafx.controls; requires javafx.fxml; requires org.controlsfx.controls; requires com.dlsc.formsfx; requires org.kordamp.ikonli.javafx; opens com.epls.deliverysupplies to javafx.fxml; exports com.epls.deliverysupplies; }
解决方案
问题核心在模块声明文件(module-info.java):
- 模块化Java项目中,即使pom.xml引入了依赖,也需要在
module-info.java里显式声明依赖的模块,否则JVM无法找到对应类。 - OpenCSV的模块名称是
com.opencsv,需要添加requires com.opencsv;声明。
修改后的module-info.java:
module com.example.delivorysupplies { requires javafx.controls; requires javafx.fxml; requires org.controlsfx.controls; requires com.dlsc.formsfx; requires org.kordamp.ikonli.javafx; // 添加OpenCSV模块依赖声明 requires com.opencsv; opens com.epls.deliverysupplies to javafx.fxml; exports com.epls.deliverysupplies; }
另外注意:你的模块名com.example.delivorysupplies和实际包名com.epls.deliverysupplies不一致,虽然这不是当前类解析失败的直接原因,但建议保持两者一致,避免后续出现其他问题。
内容的提问来源于stack exchange,提问作者JonR85
相关产品推荐
相关产品推荐

