首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javax.json模块找不到用Gradle构建JavaFX应用程序

javax.json模块找不到用Gradle构建JavaFX应用程序
EN

Stack Overflow用户
提问于 2022-10-10 09:01:24
回答 1查看 75关注 0票数 1

我试图使用Gradle运行一个模块化的JavaFX应用程序,使用很少的其他模块和非模块依赖项,但我仍然无法解决依赖关系。该项目在Eclipse中,使用OpenJDK 14-。我已经能够使用org.beryx.runtime插件https://badass-runtime-plugin.beryx.org/releases/latest/运行、构建和打包与非模块化应用程序相同的应用程序,但是我想向前迈进一步,使其模块化,所以现在我使用的是Badass JLink插件https://badass-jlink-plugin.beryx.org

为了一步一步地走,我下载并测试了这个示例:类似于我的项目的https://github.com/beryx-gist/badass-jlink-example-log4j2-javafx,我成功地运行了它。无论如何,Eclipse标记了许多由于未解决的导入而导致的错误,我想了解如何删除这些导入,但是项目确实编译和运行。下一步是通过添加实际项目所需的依赖项来修改这个工作示例,这些依赖项主要是javax.json和jOpenDocument。后者不能作为模块找到。

下面是修改后的模块-info.java

代码语言:javascript
运行
复制
    module hellofx {
    requires javafx.controls;
    requires org.apache.logging.log4j;
    
    requires javax.json;
    requires org.glassfish;

    exports org.openjfx;
    }

和build.gradle

代码语言:javascript
运行
复制
plugins {
    id 'application'
    id 'org.javamodularity.moduleplugin' version '1.8.9'
    id 'org.openjfx.javafxplugin' version '0.0.10'
    id "org.beryx.jlink" version "2.24.1"
}

repositories {
    mavenCentral()
}

sourceCompatibility = "11"
targetCompatibility = "11"

dependencies {
    implementation 'org.apache.logging.log4j:log4j-core:2.11.1'
    
    implementation 'javax.json:javax.json-api:1.1.4'
    implementation 'org.glassfish:javax.json:1.1.4'
    implementation 'org.jopendocument:jOpenDocument:1.3'
}

javafx {
    version = 16
    modules = ['javafx.controls']
 }

application {
    mainClass = "org.openjfx.HelloFX"
    mainModule = "hellofx"
 }

compileJava任务失败,出现以下错误:

代码语言:javascript
运行
复制
C:\Users\xxx\badass-jlink-example-log4j2-javafx-master\src\main\java\module-info.java:5: error: module not found: javax.json
    requires javax.json;
                  ^
C:\Users\xxx\badass-jlink-example-log4j2-javafx-master\src\main\java\module-info.java:6: error: module not found: org.glassfish
    requires org.glassfish;

有谁有办法开始解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2022-10-12 08:55:05

这个问题似乎与导入为module-info.class的旧javax.json中包含的org.glassfish:javax.json:1.1.4文件有关。库已被重新定位到jakarta,而新的org.glassfish:jakarta.json:2.0.1不再显示原来的问题。因此,解决方案是切换到较新的库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74012442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档