java - Apache FOP:添加 Apache FOP Maven 依赖项后的错误列表
问题描述
现在我正在开发一个调用 SOAP Web 服务的 JDK-14 应用程序,在收到 XML 结果之后,它必须调用一个方法来通过 Apache FOP 库生成 PDF 文档。请注意,我没有在这个项目中使用module-info.java。
这是我当前在 Maven 中的依赖项列表。所有项目都在正常运行。但是在添加了两个 Apache FOP 依赖项之后(见下文),就无法再编译和运行应用程序了。
<dependencies>
<!-- Dependencies for XML marshaling and more -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.3</version>
</dependency>
<!-- Runtime -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
<scope>runtime</scope>
</dependency>
<!-- Dependencies for Web Service -->
<dependency>
<groupId>jakarta.xml.ws</groupId>
<artifactId>jakarta.xml.ws-api</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>jakarta.jws</groupId>
<artifactId>jakarta.jws-api</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>rt</artifactId>
<version>2.3.3</version>
</dependency>
<!-- Dependencies for Apache PDF -->
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>xmlgraphics-commons</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
<version>2.5</version>
</dependency>
<!--Dependencies for QR Code-->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.4.0</version>
</dependency>
</dependencies>
错误消息不同于:
import javax.xml.namespace.QName;
The package javax.xml.namespace is accessible from more than one module: <unnamed>, java.xmlJava(8390063)
import javax.xml.transform.Result;
The package javax.xml.transform is accessible from more than one module: <unnamed>, java.xmlJava(8390063)
import javax.xml.transform.sax.SAXResult;
The package javax.xml.transform.sax is accessible from more than one module: <unnamed>, java.xmlJava(8390063)
import javax.xml.transform.stream.StreamSource;
The package javax.xml.transform.stream is accessible from more than one module: <unnamed>, java.xmlJava(8390063)
import javax.xml.parsers.DocumentBuilderFactory;
The package javax.xml.parsers is accessible from more than one module: <unnamed>, java.xmlJava(8390063)
我想知道我该如何处理这个问题。也许在冲突的特定依赖项中使用排除标记?
PD。最后,只需从命令行直接调用 Apache FOP jar 即可生成 PDF 文档。
java -jar fop.jar -r -xml <xml_path> -xsl <xsl_path> -param name1 value1 -param name2 value2 ... myPDF.pdf
但我想知道(1)是否仍然可以通过代码进行配置。以及(2)为什么现在会发生这种情况。在迁移到 JDK-14 之前,该项目使用 JDK-11 和 JDK-13 运行。
解决方案
我不太确定为什么最近的 JDK 会出现这个问题。
有JDK-8
,没关系。
当然,javax.xml
包xml-apis
依赖于apache-fop
和 in JDK-14
,但之前也是如此。
但无论如何,以下dependency-exclusion
解决了我在JDK-14
using下的问题Eclipse-2020-06
:
<!DOCTYPE xml>
<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.stackoverflow</groupId>
<artifactId>apache.fop.jdk14.exclude.xml-apis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<maven.compiler.target>14</maven.compiler.target>
<maven.compiler.source>14</maven.compiler.source>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
<version>2.5</version>
<exclusions><exclusion><groupId>xml-apis</groupId><artifactId>*</artifactId></exclusion></exclusions>
</dependency>
</dependencies>
</project>
推荐阅读
- angular - @ngrx/router-store/index 没有导出成员“RouterReducerState”
- mysql - 如何按时间选择?
- javascript - 通过拖动引导列来调整它们的大小
- javascript - Angular 6中的“错误类型错误:无法读取未定义的属性'名称'”
- laravel - laravel 5.6 中的语义 UI 集成
- r - 在 R 中使用“daff”包(或在 R 中比较数据)
- java - 以编程方式安装 Android 应用程序中的问题(自动更新)
- javascript - React Redirect 不应该在路由器外部使用
- ionic-framework - Ionic 2/3/4 自定义返回按钮
- amazon-web-services - ElasticTranscoder 的 CloudFormation 模板