【问题标题】:jaxws not compatible with javafx modules?jaxws 与 javafx 模块不兼容?
【发布时间】:2022-11-29 06:09:54
【问题描述】:

我有一个带有 javafx 和 jaxws 的 java 项目。这是我的 gradle 中的一个小片段:

dependencies {
  implementation 'com.sun.xml.ws:jaxws-ri:4.0.0'
}

javafx {
    version = "19"
    modules = [ 'javafx.controls', 'javafx.fxml' ]
}

task runClient(type: JavaExec) {
    description = 'Run Client'
    classpath = sourceSets.main.runtimeClasspath

    jvmArgs = ['--module-path', classpath.asPath, '--add-modules', 'javafx.controls,javafx.fxml']
    main = 'ClientMain'
}

我设置这个 jvmArgs 是因为How to include plugin dependencies in JavaExec task classpath?。我实际上并没有在我的项目中使用其他模块。

我现在得到错误:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module format not recognized: C:\Users\MyName\.gradle\caches\modules-2\files-2.1\com.sun.xml.ws\release-documentation\4.0.0\5eb09d77be092684546352a35f315423d67e044b\release-documentation-4.0.0-docbook.zip

没有 javafx 或 jaxws 一切正常。只有在一起似乎有问题。有任何想法吗?

【问题讨论】:

    标签: java javafx jax-ws


    【解决方案1】:

    您出于您的目的使用了错误的 jaxws 依赖项。分布的差异在这里解释:

    jaxws-ri 包含不应作为模块化分发的一部分的压缩文档。

    这些是dependencies you should be using(maven格式,你需要翻译信息gradle格式):

    <dependencies>
        <dependency>
            <groupId>jakarta.xml.ws</groupId>
            <artifactId>jakarta.xml.ws-api</artifactId>
            <version>4.0.0</version>
        </dependency>
    </dependencies>
    
    <dependencies>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-rt</artifactId>
            <version>4.0.0</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
    

    其他背景信息

    jaxws 参考实现现在通过 Eclipse 基金会作为 jakarta XML 服务作为 Eclipse Metro 的一部分进行维护。

    该代码还应使用 jakarta 包命名空间,如 jakarta documentation 中所示。

    如果您提供模块信息,这也适用于 module names

    【讨论】:

      猜你喜欢
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 2021-03-30
      • 2019-10-30
      • 2018-04-03
      • 1970-01-01
      相关资源
      最近更新 更多