我想使用apache poi和poi-ooxml写入xlsx文件。我创建了一个新的maven命令行项目,添加了依赖项,它工作得很好。但是,如果我创建一个新的JavaFX Maven项目并添加poi和poi-ooxml依赖项,我会收到以下错误。
初始化引导层时发生错误java. lang.module.FindException:无法为C:\用户\R\.m2\repository\xalan\xalan\2.7.2\xalan-2.7.2派生模块描述符。jar由以下原因引起:java.lang.module.InvalidModuleDESptorException:Provider class org.apache.bsf.BSFManager不在模块中。
这是我的pom. xml文件:
<modelVersion>4.0.0</modelVersion>
<groupId>com.ridoo</groupId>
<artifactId>MavenFXTest</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11.0.2</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>11.0.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.4</version>
<configuration>
<mainClass>com.ridoo.App</mainClass>
</configuration>
</plugin>
</plugins>
</build>
这是我的module-info.java档案
module com.ridoo {
requires javafx.controls;
requires javafx.fxml;
requires org.apache.poi.ooxml;
requires org.apache.poi.poi;
opens com.ridoo to javafx.fxml;
exports com.ridoo;
}
我该如何解决这个问题?
对于任何需要启动并运行poi-ooxml的人来说,这是我的解决方案。
Maven下载batik和其他依赖项,例如ad xalan,这些依赖项不是工作所必需的。因此,除了我将提到的几个依赖项之外,不要为此使用Maven。
>
从poi.apache.org下载并解压官方poi二进制zip
从下载和解压的zip中,导航到辅助文件夹并修改batik-all-1.13中的META-INF/services/org. apache.batik.script.解释性工厂文件。jar使用vim或vi。注释掉“org.apache.batik.bridge.Rhino解释性工厂”行并保存。
从以下目录中添加所有jar文件作为外部库:-辅助库、lib和ooxml-lib。添加poi-5.0.0目录中除poi-ooxml-full-5.0.0之外的所有jar。jar。
在maven中,添加以下依赖项,您就可以开始了:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>