我决定将遗留项目从jdk7迁移到jdk11,并且无法解决jaxb的问题。我们有一个多模块的maven项目。下面是父pom的一部分
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.XXX.core.build</groupId>
<artifactId>parent</artifactId>
<version>2.1.2</version>
<packaging>pom</packaging>
<name>Core Build</name>
<prerequisites>
<maven>3.6</maven>
</prerequisites>
<modules>
<!-- <module>./targetdefs</module> -->
<module>../com.XXX.core</module>
....more modules
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jdk-version>11</jdk-version>
<!-- Plugins tycho version -->
<tycho.version>1.7.0</tycho.version>
<javax.activation.version>1.2.0</javax.activation.version>
<jaxb.api.version>2.3.0</jaxb.api.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- API -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.3</version>
<!--<scope>compile</scope>-->
</dependency>
<!--Runtime-->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.3</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<sourceDirectory>${basedir}/src</sourceDirectory>
<testSourceDirectory>${basedir}/src</testSourceDirectory>
<plugins>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-plugin</artifactId>
<version>${tycho.version}</version>
<configuration>
<source>${jdk-version}</source>
<target>${jdk-version}</target>
</configuration>
</plugin>
</build>
</project>这是孩子的pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.XXX.core.build</groupId>
<artifactId>parent</artifactId>
<version>2.1.2</version>
<relativePath>../com.XXX.core.build/pom.xml</relativePath>
</parent>
<artifactId>com.XXX.core</artifactId>
<packaging>eclipse-plugin</packaging>
<name>Core</name>
<dependencies>
<!-- API -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.3</version>
<!--<scope>compile</scope>-->
</dependency>
<!--Runtime-->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.3</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>${basedir}</directory>
<filtering>true</filtering>
<includes>
<include>**/version.properties</include>
</includes>
</resource>
</resources>
</build>
</project>但是在尝试在子pom上执行mvm干净安装之后,我得到了
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-compiler-plugin:1.7.0:compile (default-compile) on project com.XXX.core: Compilation failure: Compilation failure:
[ERROR] PATH\core\util\stax\StaxIterator.java:[17]
[ERROR] import javax.xml.bind.JAXBContext;
[ERROR] ^^^^^^^^^^^^^^
[ERROR] The import javax.xml.bind cannot be resolved虽然Netbeans添加了jakarta.xml.bin-api和jaxb作为库,但是文件StaxIterator.java中没有任何错误。
我跟踪了这篇文章How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9
在这种情况下,我怎样才能解决问题--我尝试了StackOverflow的所有可能性:(
发布于 2020-07-31 21:34:43
问题已经解决了,,根本不需要向maven添加依赖项。问题的根源(在我的例子中)是在文件META/MANIFEST.MF中,我刚刚将javax.xml.bind添加到“Import:”部分
...
Import-Package: javax.persistence,
javax.xml.bind,
org.apache.commons.beanutils,
org.osgi.framework;version="1.6.0",
org.osgi.service.event;version="1.3.0",
org.slf4j;version="1.7.30"https://stackoverflow.com/questions/63196435
复制相似问题