【发布时间】:2018-10-12 13:24:37
【问题描述】:
我将所有其他主题都标记为红色(可能适用于 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 时出现错误:
[ERROR] ...ExceptionType.java:[6,22] 包 javax.xml.bind.annotation 不可见 (包javax.xml.bind.annotation在未命名的模块中声明,但模块javax.xml.bind.annotation不读取)
有人在 jdk 11 上运行它吗?
编辑: 1)带有java模块系统的应用版本: 我有类似的问题: 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(终极版),Build #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 错误。
【问题讨论】:
-
能否在问题中分享
module-info.java和maven的编译配置? -
错误提示该项目有一个名为“javax.xml.bind.annotation”的模块
requires java.xml.bind,但该模块已放在类路径而不是模块名称上。 -
首先我尝试不使用 module-info.java,然后 IDE 也没有看到 java.xml.bind:/ 我在 jdk 8 处编译了正确的项目,现在这个包只有问题。我的 module-info.java 是正确的,只看不到 java.xml.bind
-
...在我的项目中,我当然没有名为“javax.xml.bind.annotation”的模块 - 此消息来自我的项目之外(可能来自“javax.xml.bind”?)
-
我的 intellij 可能有问题。在我的子模块 intellij 中,仅从 pom.xml 中读取依赖项:javax.activation 和 javax.annotation。而且他没有阅读 javax.xml.bind 和 org.glassfish.jaxb(在文件 > 项目结构 > 模块 > 依赖项中,我没有这些依赖项)。现在我转换我的应用程序并且不使用 module-info.java 但我看到 org.glassfish.jaxb jaxb-runtime over 2.3.0 有内部文件 module-info.class 但在最旧的版本中他没有这个文件。所以也许这里有一些原因。有人可以帮忙吗?:)