【发布时间】:2020-11-30 16:16:54
【问题描述】:
现在我正在开发一个调用 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)
我想知道如何处理这个问题。也许在冲突的特定依赖项中使用 exclusion 标记?
警察局。最后,只需从命令行直接调用 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 运行。
【问题讨论】:
标签: java xml maven apache-fop java-14