如何解决java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException?

1233
我有一些代码,使用了作为Java 6/7/8 JDK的一部分提供的JAXB API类。当我在Java 9中运行相同的代码时,运行时会出现指示找不到JAXB类的错误。
JAXB类自Java 6以来已经作为JDK的一部分提供,那么为什么Java 9找不到这些类了呢?

2
这个回答中的附加部分与这些API的迁移有关。 - Naman
10
使用Java 8构建代码可以让你的代码编译通过,但是当你尝试在Java 9+上运行已编译的代码时,会因为缺少JAX-B而失败。 - Andy Guibert
2
对于Java 11,本文的解决方案是最新的:https://crunchify.com/java-11-and-javax-xml-bind-jaxbcontext/ - Eric
请参见 http://wiki.bitplan.com/index.php/Java8 上的 Java 8 相关编程内容。 - Wolfgang Fahl
这个回答解决了你的问题吗?使用Java EE API替换已弃用的JPMS模块 - 9ilsdx 9rvj 0lo
显示剩余2条评论
45个回答

0

我在应用程序中遇到了同样的问题,即模块级别的 build.gradle 文件同时添加了 View Binding 和 Data Binding。

之前的版本

viewBinding {
    enabled = true
}

dataBinding {
    enabled = true
}

已解决

dataBinding {
    enabled = true
}

在项目级别的 build.gradle 中使用如下:
classpath 'com.android.tools.build:gradle:3.6.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"

0

这对我有用,我有一个使用Java 8编译的Spring Boot项目,但是我不知道为什么有一天我的Maven开始使用Java 11进行编译,在Ubuntu上我用以下方法解决:

sudo update-java-alternatives  -l

这显示了我电脑上可用的JDK:

java-1.11.0-openjdk-amd64      1111       /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64`

所以我最终运行了这个命令来选择所需的内容:

sudo update-java-alternatives  -s java-1.8.0-openjdk-amd64 

就是这样,如果想了解更多,请查看如何使用命令更新替代项


你的回答并没有回答问题,你只是改变了使用Java8的路径,而问题是如何使用Java9解决。 - nekperu15739

0

对我来说,这是一个简单的解决方案(Mac用户)

  run in terminal -->   alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`;java -version"

then run -->          j8

thats it !!(now run your mvn commands)

或者你可以在你的 .bash_profile 文件中设置上述内容


0

如果您正在调用SOAP Web服务(例如使用jaxws-maven-plugin),只需添加此依赖项即可消除所有JAXB错误:

<dependency>
            <groupId>org.glassfish.metro</groupId>
            <artifactId>webservices-rt</artifactId>
            <version>2.4.3</version>
</dependency>

已使用Java 13进行测试


0

我正在使用这些依赖项,运行得非常完美

enter code h<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.1</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>
</dependencies>ere

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接