Java 17模块项目(Maven),阅读JSON Noclassdeffounderror:Jakarta/JSON/JSONCONFIG $ KEYSTRATEGY

发布于 2025-01-31 07:15:21 字数 7103 浏览 3 评论 0原文

这不是我的第一个基于模块的项目,但我对一切的工作原理都感到非常震惊,我相信这是我的问题。目前,Jigsaw项目似乎是烟雾和镜子。 任何帮助将不胜感激。

这是例外发生的地方:

result.payload().ifPresent(payloadString -> {

        final var jsonReader = Json.createReader(new StringReader(payloadString));
        final var jsonObject = jsonReader.readObject(); <== error here
        jsonReader.close();

我的模块info.java

    module com.mymodule.pocclient {
    requires javafx.controls;
    requires javafx.fxml;
    requires jcip.annotations;
    requires java.logging;
    requires org.controlsfx.controls;
    requires com.dlsc.formsfx;
    requires jakarta.json.bind;
    requires jakarta.json;
    requires org.eclipse.yasson;
    requires org.eclipse.parsson;
    requires static lombok;
    requires jjwt.api;
    requires com.mymodule.cryptography;


    opens com.mymodule.pocclient.controllers to javafx.fxml;
    opens com.mymodule.pocclient.model to javafx.base, org.eclipse.yasson;
    opens com.mymodule.pocclient to javafx.fxml;
    opens com.mymodule.pocclient.network to org.eclipse.parsson;

    exports com.mymodule.pocclient;
    exports com.mymodule.pocclient.controllers;
}

例外:

java.lang.NoClassDefFoundError: jakarta/json/JsonConfig$KeyStrategy
at [email protected]/org.eclipse.parsson.JsonObjectBuilderImpl$DuplicateStrategy.<clinit>(JsonObjectBuilderImpl.java:373)
at [email protected]/org.eclipse.parsson.JsonObjectBuilderImpl.<init>(JsonObjectBuilderImpl.java:59)
at [email protected]/org.eclipse.parsson.JsonParserImpl.getObject(JsonParserImpl.java:171)
at [email protected]/org.eclipse.parsson.JsonReaderImpl.readObject(JsonReaderImpl.java:103)
at com.lifelenz.poclifelenzclient/com.mymodule.pocclient.controllers.LoginController.lambda$processAuthenticatedUser$0(LoginController.java:121)

我的pom文件的依赖项(不确定有多少相关)

<dependency>
        <groupId>com.lifelenz.jmsa</groupId>
        <artifactId>cryptography</artifactId>
        <version>0.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.parsson</groupId>
        <artifactId>parsson</artifactId>
        <version>1.1.0</version>
    </dependency>

    <dependency>
        <groupId>jakarta.json</groupId>
        <artifactId>jakarta.json-api</artifactId>
        <version>2.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>1.3.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.24</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jakarta.json.bind</groupId>
        <artifactId>jakarta.json.bind-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse</groupId>
        <artifactId>yasson</artifactId>
        <version>3.0.0-RC2</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>jakarta.json</artifactId>
        <version>2.0.1</version>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-api</artifactId>
        <version>0.11.5</version>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-impl</artifactId>
        <version>0.11.5</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is preferred -->
        <version>0.11.5</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>net.jcip</groupId>
        <artifactId>jcip-annotations</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>${javafx.version}</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>${javafx.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.controlsfx</groupId>
        <artifactId>controlsfx</artifactId>
        <version>11.1.1</version>
    </dependency>
    <dependency>
        <groupId>com.dlsc.formsfx</groupId>
        <artifactId>formsfx-core</artifactId>
        <version>11.5.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.openjfx</groupId>
                <artifactId>*</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>18.0.1</version>
    </dependency>

This is not my first module based project but I am very shakey on how it all works, I am sure this is my issue. Project Jigsaw seems like smoke and mirrors to me at the moment.
Any assistance would be greatly appreciated.

Here is where the exception happens:

result.payload().ifPresent(payloadString -> {

        final var jsonReader = Json.createReader(new StringReader(payloadString));
        final var jsonObject = jsonReader.readObject(); <== error here
        jsonReader.close();

My module-info.java

    module com.mymodule.pocclient {
    requires javafx.controls;
    requires javafx.fxml;
    requires jcip.annotations;
    requires java.logging;
    requires org.controlsfx.controls;
    requires com.dlsc.formsfx;
    requires jakarta.json.bind;
    requires jakarta.json;
    requires org.eclipse.yasson;
    requires org.eclipse.parsson;
    requires static lombok;
    requires jjwt.api;
    requires com.mymodule.cryptography;


    opens com.mymodule.pocclient.controllers to javafx.fxml;
    opens com.mymodule.pocclient.model to javafx.base, org.eclipse.yasson;
    opens com.mymodule.pocclient to javafx.fxml;
    opens com.mymodule.pocclient.network to org.eclipse.parsson;

    exports com.mymodule.pocclient;
    exports com.mymodule.pocclient.controllers;
}

The exception:

java.lang.NoClassDefFoundError: jakarta/json/JsonConfig$KeyStrategy
at [email protected]/org.eclipse.parsson.JsonObjectBuilderImpl$DuplicateStrategy.<clinit>(JsonObjectBuilderImpl.java:373)
at [email protected]/org.eclipse.parsson.JsonObjectBuilderImpl.<init>(JsonObjectBuilderImpl.java:59)
at [email protected]/org.eclipse.parsson.JsonParserImpl.getObject(JsonParserImpl.java:171)
at [email protected]/org.eclipse.parsson.JsonReaderImpl.readObject(JsonReaderImpl.java:103)
at com.lifelenz.poclifelenzclient/com.mymodule.pocclient.controllers.LoginController.lambda$processAuthenticatedUser$0(LoginController.java:121)

dependencies from my pom file (not sure how much is relevant)

<dependency>
        <groupId>com.lifelenz.jmsa</groupId>
        <artifactId>cryptography</artifactId>
        <version>0.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.parsson</groupId>
        <artifactId>parsson</artifactId>
        <version>1.1.0</version>
    </dependency>

    <dependency>
        <groupId>jakarta.json</groupId>
        <artifactId>jakarta.json-api</artifactId>
        <version>2.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>1.3.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.24</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>jakarta.json.bind</groupId>
        <artifactId>jakarta.json.bind-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse</groupId>
        <artifactId>yasson</artifactId>
        <version>3.0.0-RC2</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>jakarta.json</artifactId>
        <version>2.0.1</version>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-api</artifactId>
        <version>0.11.5</version>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-impl</artifactId>
        <version>0.11.5</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is preferred -->
        <version>0.11.5</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>net.jcip</groupId>
        <artifactId>jcip-annotations</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>${javafx.version}</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>${javafx.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.controlsfx</groupId>
        <artifactId>controlsfx</artifactId>
        <version>11.1.1</version>
    </dependency>
    <dependency>
        <groupId>com.dlsc.formsfx</groupId>
        <artifactId>formsfx-core</artifactId>
        <version>11.5.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.openjfx</groupId>
                <artifactId>*</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>18.0.1</version>
    </dependency>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

极度宠爱 2025-02-07 07:15:21

我必须在更高或等于2.1.0的版本中添加jakarta.json-apiJSONCONFIG class在版本中介绍2.1 jakarta JSONB实现)

<dependency>
  <groupId>jakarta.json</groupId>
  <artifactId>jakarta.json-api</artifactId>
  <version>2.1.2</version>
</dependency>

I had to add the jakarta.json-api in a version higher or equal 2.1.0 (JsonConfig class was introduced in version 2.1 of jakarta jsonb implementation)

<dependency>
  <groupId>jakarta.json</groupId>
  <artifactId>jakarta.json-api</artifactId>
  <version>2.1.2</version>
</dependency>
未央 2025-02-07 07:15:21

删除以下依赖性解决了问题。

    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>jakarta.json</artifactId>
        <version>2.0.1</version>
    </dependency>

我认为它正在与帕森发生冲突。

Removing the following dependency resolved the issue.

    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>jakarta.json</artifactId>
        <version>2.0.1</version>
    </dependency>

I assume it was clashing with parsson.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文