【问题标题】:Yet another problem with JAXB on JDK-11. Now with tycho-compiler pluginJDK-11 上的 JAXB 的另一个问题。现在有了 tycho-compiler 插件
【发布时间】:2020-07-31 17:26:05
【问题描述】:

我决定将我们的旧项目从 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 clean install 之后,我得到了

[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.bind-api 和 jaxb-impl 作为库并且文件 StaxIterator.java 中没有任何错误

我关注了这个帖子How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9

在这种情况下我该如何解决问题 - 我尝试了 StackOverflow 的所有可能性:(

【问题讨论】:

    标签: maven jaxb java-11 tycho


    【解决方案1】:

    问题已解决 根本不需要向 maven 添加依赖项。 问题的根源(在我的情况下)在文件 META-INF/MANIFEST.MF 中 我刚刚将 javax.xml.bind 添加到“Import-Package:”部分

    ...
    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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 2011-03-05
      • 2022-01-11
      • 2023-04-05
      • 2019-05-10
      相关资源
      最近更新 更多