zoukankan      html  css  js  c++  java
  • Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在


    Jdk12 都发布了, 我也下载一个玩一玩吧。刚准备要下载,发现之前已经下载了一个11, 那就11 吧,也不用太新了。

    安装了jdk11,习惯性的设置了一下环境变量: JAVA_HOME=D: ooljdk-11.0.2。

    JAVA_HOME=D:Program FilesJavajdk1.8.0_201

    设置完了,忘记改回去了。 项目中其实使用的是jdk8,结果运行 mvn 遇到了这么一个问题, 搞了好久才解决问题。仅此记录一下!



    问题是,使用cmd 执行 mvn clean install -DskipTest=true 就会有这个问题;IDEA中直接执行就正常,IDEA中 Ctrl +F9 也是正常的(我的IDEA的java 的版本是8) 。

    错误是:程序包javax.xml.bind.annotation不存在:

    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5:compile (default-compile) on project erdp_system_domain: Compilation failure
    [ERROR] /E:/dev/erdp2/erdp_system/erdp_system_domain/src/main/java/com/lk/platform/system/domain/entity/ELDict.java:[4,33] 程序包javax.xml.bind.annotation不存在
    [ERROR]
    [ERROR] -> [Help 1]

    我晕。 刚看到这个错误的时候,简直不可思议,我擦, 怎么这个破程序,这么多bug!!!

    可以看到ELDict 类中确实有一个这么的引用:import javax.xml.bind.annotation.XmlAttribute;

     虽然是没有用到的,但是却引起的mvn 编译的错误。网上bing一把搜索“程序包javax.xml.bind.annotation不存在”,得到的是:

    软件包 javax.xml.bind.annotation不存在-CSDN论坛
    2009-12-2 · 用jaxb的到的类,不能编译,原因是: 软件包 javax.xml.bind.annotation不存在
    
    https://bbs.csdn.net/topics/320208203
    新手问题,import javax.xml.bind 编译出错-CSDN论坛
    2018-6-2
    软件包 org.apache.commons.fileupload不存在?-CSDN论坛
    2011-5-10
    软件包javax.awt,java.swing不存在,请教下原因。谢谢 ...
    2009-12-29
    软件包java.until不存在是怎么回事-CSDN论坛
    2009-4-12
    查看更多结果
    gradle编译报错:程序包javax.annotation不存在 ...
    2018-8-29 · 问题描述: 采用gradle命令编译(gradle build)时,报如下错误: XXXXXXXXXX.java:11: 错误: 程序包javax.annotation不存在 import javax.annotation.Nullable; 解决 ...
    
    https://blog.csdn.net/yinxing2008/article/details/82185172
    解决:Dagger2使用过程中的"程序包javax.annotation不存在 ...
    2016-12-11 · 问题描述:采用gradle命令编译(gradlebuild)时,报如下错误:XXXXXXXXXX.java:11:错误:程序包javax.annotation不存在importjavax.annota... 博文 来自: yinxing2008 ...
    
    https://blog.csdn.net/younghong1992/article/details/53575330
    XmlAccessorOrder (Java 2 Platform SE 6)
    2008-5-8 · 有关其他公共信息,请参阅 javax.xml.bind.package javadoc 中的“包规范”。 包上的 @XmlAccessorOrder 注释可应用于包中的所有类。继承语义的应用如下 ...
    
    https://download.oracle.com/.../XmlAccessorOrder.html
    java – 包org.apache.hadoop.fs不存在 - 程序园
    2019-1-21 · java – 包com.sun.xml.internal.bind.v2.model.annotation不存在 3. java – 包不存在错误 ... 程序包javax.servlet.annotation不存在 8. 软件包 javax.servlet 不存在 包android ...
    
    www.voidcn.com/article/p-abbxrldb-bup.html
    错误: 程序包com.sun.xml.internal.bind.v2.schemagen ...
    2014-6-21 · 问题描述: 用ant来构建程序时报如下错误: 错误: 程序包com.sun.xml.internal.bind.v2.schemagen.xmlschema不存在 [javac] import com.sun.xml.internal.bind ...
    
    www.voidcn.com/article/p-ftnsltjy-bca.html
    javax.xml.bind.jar-CSDN下载
    2013-8-22 · 软件包 javax.xml.bind.annotation不存在 新手问题,import javax.xml.bind 编译出错 javax.xml.bind 和javax.xml.bind.annotation.XmlType问题 真正解决方案:java.lang ...

    貌似少了什么软件包? 可是, javax.xml.bind.annotation.XmlAttribute 是确实可以直接访问的,是直接存在于 jdk8 之中的, 应该不需要说明其他的 jar 吧。 另外注意但 第一个答案是 2009 年的了, 那个时候可能没有包含在 jdk之中吧。。。  直觉告诉我,可能是 jdk 版本的问题,因为我在IDEA中执行mvn就是正常的,我的IDEA的java 的版本是8。

    执行java -version,返回是:

    java -version
    java version "1.8.0_201"
    Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
    Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

    好像没有什么问题啊!!

    看来是个麻烦的问题,貌似大家都没有遇到过。(好像还真是如此。。)。不得已,暂时只能在IDEA运行maven。 但是这个问题一直困扰着我。。 bing 搜索javax.xml.bind.annotation does not exist, 终于看到了答案:

    第一个就是 答案: https://stackoverflow.com/questions/52502189/java-11-package-javax-xml-bind-does-not-exist

    According to the release-notes, Java 11 removed the Java EE modules:
    
    java.xml.bind (JAXB) - REMOVED
    Java 8 - OK
    Java 9 - DEPRECATED
    Java 10 - DEPRECATED
    Java 11 - REMOVED
    See JEP 320 for more info.

    原来已经被删除了!

    第二个,其实验证我的想法, JAXB ( 应该就是 javax.xml.bind.annotation 包)在之前是不直接属于jdk的,需要而且的jar 引入。  https://stackoverflow.com/questions/2895777/does-jaxb-work-under-java-5 

    实际上可以这么引入:

    <dependency>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>
      <version>2.3.0</version>
    </dependency>
    <dependency>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-core</artifactId>
      <version>2.3.0</version>
    </dependency>
    <dependency>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-impl</artifactId>
      <version>2.3.0</version>
    </dependency>

    但是,到了11, JAXB这个功能又被去掉了。。 所以,有必要的话,还是需要手动引入那些个jar。

    定睛一看,发现JAVA_HOME有问题,JAVA_HOME=D: ooljdk-11.0.2 ;终于 想起了之前的改动。测试一把。修改JAVA_HOME,

    set JAVA_HOME=wa, 再运行 mvn,出现:

    E:deverdp2erdp_baseerdp_modules>call mvn clean install -DskipTest=true
    The JAVA_HOME environment variable is not defined correctly
    This environment variable is needed to run this program
    NB: JAVA_HOME should point to a JDK not a JRE
    请按任意键继续. . .

    可见 mvn 确实会直接读取 JAVA_HOME

    但为什么 java -version 确实正确的呢? 查看path:

    Path=.;D:	oolapache-maven-3.6.1in;D:	oolmysql-5.7.23-winx64in;C:Program Files (x86)Common FilesOracleJavajavapath;D:	ooljdk-11.0.2in;C:ProgramDataOracleJavajavapath;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;d:Program FilesGitcmd;C:Program Files (x86)ATI TechnologiesATI.ACECore-Static;C:WINDOWSSystem32OpenSSH;C:ProgramDatachocolateyin;C:UsersAdministratorAppDataLocalMicrosoftWindowsApps

    原来 path先是查找到 C:Program Files (x86)Common FilesOracleJavajavapath , C:Program Files (x86)Common FilesOracleJavajavapathjava -version 返回就是 java version "1.8.0_201" !!

    但是呢, maven 却是直接读取JAVA_HOME  环境变量的, 所以出现了 jdk 误以为设置正确的假象!( 其实是没有设置正确! )

    再修改JAVA_HOME 为jdk8 :
    set JAVA_HOME=D:Program FilesJavajdk1.8.0_201

    再运行maven 程序, 正!常!了!


    总结,看了jdk 也不能乱升级,虽然说Java的向后兼容做得非常非常好, 但是也不是100%兼容!特别是 javax 的一些内容,很多都是实验性质的!。。


  • 相关阅读:
    编译原理-第二章 一个简单的语法指导编译器-2.4 语法制导翻译
    编译原理-第二章 一个简单的语法指导编译器-2.3 语法定义
    编译原理-第二章 一个简单的语法指导编译器-2.2 词法分析
    LeetCode 1347. Minimum Number of Steps to Make Two Strings Anagram
    LeetCode 1348. Tweet Counts Per Frequency
    1349. Maximum Students Taking Exam(DP,状态压缩)
    LeetCode 1345. Jump Game IV(BFS)
    LeetCode 212. Word Search II
    LeetCode 188. Best Time to Buy and Sell Stock IV (动态规划)
    LeetCode 187. Repeated DNA Sequences(位运算,hash)
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/10908340.html
Copyright © 2011-2022 走看看