首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAXB在JDK-11上的另一个问题。现在使用tycho-编译器插件

JAXB在JDK-11上的另一个问题。现在使用tycho-编译器插件
EN

Stack Overflow用户
提问于 2020-07-31 17:26:05
回答 1查看 986关注 0票数 0

我决定将遗留项目从jdk7迁移到jdk11,并且无法解决jaxb的问题。我们有一个多模块的maven项目。下面是父pom的一部分

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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干净安装之后,我得到了

代码语言:javascript
复制
[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的所有可能性:(

EN

回答 1

Stack Overflow用户

发布于 2020-07-31 21:34:43

问题已经解决了,,根本不需要向maven添加依赖项。问题的根源(在我的例子中)是在文件META/MANIFEST.MF中,我刚刚将javax.xml.bind添加到“Import:”部分

代码语言:javascript
复制
...
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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63196435

复制
相关文章

相似问题

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