我有一个具有旧docx4j依赖项的maven项目,我想更新至Java9。在更新过程中,我将项目从maven更改为gradle。

因此,现在我在IntelliJ中有一个gradle项目,它具有以下依赖性:

dependencies {
    implementation('commons-io:commons-io:2.6')
    implementation('javax.xml.bind:jaxb-api:2.4.0-b180725.047')
    implementation('org.docx4j:docx4j:6.0.1')
    implementation('org.docx4j:docx4j-ImportXHTML:6.0.1')
    implementation('org.docx4j:docx4j-export-fo:6.0.1')
    testImplementation('junit:junit:4.12')
}

该版本正在运行,但是如果我想使用Docx4J.load(...)或WordprocessingMLPackage.load(...)打开.docx文件,则会引发RuntimeException。
在 Debug模式下,我可以看到以下消息:未加载类:org.docx4j.jaxb.Context

此Context.java文件具有如下所示的静态代码块:
static {
    ...
}

我认为这是gradle特定的错误,因为我创建了一个新的maven项目,其代码和依赖项与gradle项目相同,并且可以正常工作。

有什么解决办法吗,还是我将来也应该使用maven?

最佳答案

https://stackoverflow.com/a/51235096/1031689上有特定于Gradle的答案

或改为“添加模块”,例如:

  • https://www.concretepage.com/questions/531
  • https://github.com/IntershopCommunicationsAG/jaxb-gradle-plugin/issues/11

  • mac java 9 gradle ClassNotFoundException: javax.xml.bind.JAXBElement when building

    10-05 20:23
    查看更多