jdk 11-包javax.xml.bind.annotation在未命名模块中声明,但是模块javax.xml.bind.annotation不读取它

时间:2018-10-12 13:24:37

标签: jaxb java-11

我重涂了所有其他主题(也许适用于jdk 10),但仍然无法在 jdk 11 上运行javax.xml.bind

我的依赖性:

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.4.0-b180830.0359</version>                   <!--  2.2.12, 2.3.1  -->
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.4.0-b180830.0438</version>                   <!-- 2.3.1 -->
        <!--<scope>compile</scope>-->
        <!--<scope>runtime</scope>-->
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>javax.activation-api</artifactId>
        <version>1.2.0</version>
    </dependency>
    <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>1.3.2</version>
    </dependency>

我的IDE(最新的intellij)仍然看不到导入:

import javax.xml.bind.annotation.XmlAccessType;

我的module-info.java也看不到:

requires java.xml.bind;

当我使用Maven时出现错误:

  

[错误] ... ExceptionType.java:[6,22]包javax.xml.bind.annotation不可见     (在未命名的模块中声明了包javax.xml.bind.annotation,但是模块javax.xml.bind.annotation无法读取)

有人在jdk 11上运行它吗?

编辑: 1)带有Java模块系统的Ap​​p版本: 我有类似的问题: https://youtrack.jetbrains.com/issue/IDEA-197956 但我的错误消息有点不同

2)没有Java模块系统的应用版本: Maven正确编译。问题是intellij看不到我的进口货:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

并说:无法解析符号。 同样在文件>项目结构>模块>依赖项中,IntelliJ没有添加javax.xml.bind和org.glassfish.jaxb 为什么? 我在pom中添加了它:

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.4.0-b180830.0359</version>                   <!-- 2.2.8, 2.4.0-b180830.0359  -->
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.4.0-b180830.0438</version>                   <!-- 2.3.0, 2.4.0-b180830.0438 -->
    </dependency>

JDK:openjdk11 Intellij版本:IntelliJ IDEA 2018.2.4(Ultimate Edition),内部版本#IU-182.4505.22,建于2018年9月18日,JRE:1.8.0_152-release-1248-b8 amd64 JVM:JetBrains s.r.o的OpenJDK 64位服务器VM Maven:3.5.4

这似乎是intellij的错误。

1 个答案:

答案 0 :(得分:0)

我们设法找到了问题的原因。在ide intellij中,我有一个模块maven项目,并且我使用JLupin Platform Development Tool,因此在* .iml文件中我没有以下行:

'<'module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule =“ true”类型=“ JAVA_MODULE”版本=“ 4”> 但我有例如:

'<'module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule =“ true”类型=“ JLP_NATIVE_MICROSERVICE_IMPLEMENTATION_MODULE_TYPE”版本=“ 4”>

在开发过程中,更改了模块的名称,然后这个想法问是否要删除模块(因为ide无法识别:

type =“ JLP_NATIVE_MICROSERVICE_IMPLEMENTATION_MODULE_TYPE”)。 尽管没有选择选定的选项,但是ide会自动执行:

  • 选择被忽略的Maven模块
  • 从以下位置替换为iml文件: '<'module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule =“ true”类型=“ JLP_NATIVE_MICROSERVICE_IMPLEMENTATION_MODULE_TYPE”版本=“ 4”> 至: '<'模块类型=“ JLP_NATIVE_MICROSERVICE_IMPLEMENTATION_MODULE_TYPE”版本=“ 4”>

由于上述原因,项目未正确读取Maven工件。统一名称并将项目标记为未忽略后,它可以正常工作。 该问题与Java包无关