Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在

2023-05-16

Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在


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

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

JAVA_HOME=D:\Program Files\Java\jdk1.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:\tool\jdk-11.0.2 ;终于 想起了之前的改动。测试一把。修改JAVA_HOME,

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


E:\dev\erdp2\erdp_base\erdp_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:\tool\apache-maven-3.6.1\bin;D:\tool\mysql-5.7.23-winx64\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;D:\tool\jdk-11.0.2\bin;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;d:\Program Files\Git\cmd;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\WINDOWS\System32\OpenSSH\;C:\ProgramData\chocolatey\bin;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps

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

 

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

 

再修改JAVA_HOME 为jdk8 :
set JAVA_HOME=D:\Program Files\Java\jdk1.8.0_201

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

 


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


 

posted on 2019-05-22 20:29 CanntBelieve 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/FlyAway2013/p/10908340.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在 的相关文章

  • CF908G New Year and Original Order

    CF908G New Year and Original Order gzz讲过 xff0c 可我到今天还是不会 有点trick的数位DP 比较显然的思路是 xff0c 考虑所有数中排序后每一位的贡献 cnt i x 表示S 1 S x 第
  • 本地在不安装Oracle的情况下安装PLSQL客户端

    本文解决问题 xff1a 通常在本地安装PLSQL后 xff0c 如果本地没有安装Oracle数据库的话 xff0c PLSQL是不能使用的 xff0c 输入远程数据库登录信息会提示 xff1a Oracle Client没有正确安装 这个
  • Ubuntu的中文乱码问题

    目标 xff1a 使系统 服务器支持中文 xff0c 能够正常显示 1 首先 xff0c 安装中文支持包language pack zh hans xff1a sudo apt get install language pack zh ha
  • Python argparse 处理命令行小结

    Python argparse 处理命令行小结 1 关于argparse 是python的一个命令行解析包 xff0c 主要用于处理命令行参数 2 基本用法 test py是测试文件 xff0c 其内容如下 import argparse
  • 分布式系统心跳协议的设计

    分布式系统心跳协议的设计 应用层心跳必不可少 xff1a 1 操作系统崩溃导致机器重启 没有机会发送 FIN 分节 2 服务器硬件故障导致机器重启 也没有机会发送 FIN 分节 3 并发连接数很高时 操作系统或进程如果重启 可能没有机会断开
  • malloc vs memset

    malloc vs memset OS内存分配过程如下 xff1a 用户态程序使用malloc接口 xff0c 分配虚拟地址 用户程序访问该虚拟地址 xff0c 比如memset 硬件 xff08 MMU xff09 需要将虚拟地址转换为物
  • c++ rvo vs std::move

    c 43 43 rvo vs std move To summarize RVO is a compiler optimization technique while std move is just an rvalue cast whic
  • linux du

    1 显示当前目录及子目录每个文件占用的块数量 du 2 显示当前目录占用的块数量 du s 3 查看当前目录占用空间啊大小 xff08 空间大小 61 块数量 块大小 xff09 du sh 4 查看当前目录各个文件占用空间大小 du sh
  • python绘制散点图入门

    import matplotlib pyplot as plt x values 61 list range 1 1001 y values 61 x 2 for x in x values plt scatter x values y v
  • linux 配置 l2tp-client

    1 安装yum源 yum install epel release 1 安装xl2tpd和ppp yum y install xl2tpd ppp 3 配置xl2tpd conf xff0c 原始的xl2tpd conf里面有 lns de
  • ros开启快速转发模式

    RB CCR设备开启FastTrack ip firewall filter add chain 61 forward action 61 fasttrack connection connection state 61 establish
  • ROS的脚本多拨

    ros设置单网卡拨多ADSL 使用vrrp 有些版本有问题 xff0c 使用5 2破解版本测试成功 1 创建100个vrrp 并绑定到wan口下 for i from 1 to 100 do 61 interface vrrp add co
  • zabbix4.0 相关的拓扑图及centos的虚拟配置

    zabbix的拓扑图相关资料 https blog 51cto com qicheng0211 1591073 zabbix配合 grafana zabbix 安装好后 参考 grafana 官方文档 https grafana com g
  • 通过TCP协议发送DNS请求

    通过TCP协议发送DNS请求的方法 文章出处 xff1a http www bingtech net wordpress 2011 04 233 下载dnsapi dll文件 然后到Google xff0c 搜索 替换系统文件 replac
  • PLC实现积分的计算方法

    以电机运行转速来计算电机运行圈数为例 在PLC中定义定时器中断 xff0c 中断时间设置为200ms 转载于 https www cnblogs com chenpan6227 p 11558647 html
  • PLC中相关量的斜坡控制

    转载于 https www cnblogs com chenpan6227 p 11558750 html
  • PLC中m法计算电机转速

    转载于 https www cnblogs com chenpan6227 p 11558715 html
  • oauth2.0+jwt 源码探究之旅

    oauth2 0协议是一种对外开放式协议 xff0c 主要用于第三方登录授权 例如 xff1a 在豆瓣官网点击用qq登录 以及微信的授权都是基于oauth2 0协议做的 oauth2 0的认证流程 xff08 A xff09 用户打开客户端
  • 读取 appsettings.json

    Appsettings json 配置 xff1a 个配置文件就是一个json文件 xff0c 并且是严格的json文件 xff0c 所有的属性都需要添加 引号 下图是一个常规的代码示例 xff1a 34 UrlString 34 34 U
  • OVN学习整理

    部署OVN网络拓扑 OVN 安装软件包 etc yum repos d CentOS OpenStack ocata repo yum list installed grep openvswitch openvswitch x86 64 1

随机推荐

  • 关于python写文件时的回车符

    测试环境Windows 回车符是0x0D和0x0A俩个字符 xff0c 在python中记为 39 r n 39 写文件时 xff0c 如果文件打开格式为 39 w 39 xff0c 39 n 39 就按照0D 0A写入了文件 xff0c
  • 《对软件工程课程的期望》

    自我介绍 xff1a 各位老师 xff0c 同学大家好 我是软件三班 李德帅 xff0c 大三了我希望通过这学期学习软件工程这门课 xff0c 拓展丰富自己的知识领域 xff0c 提升自己的对软件编程的思维和素质 xff0c 并且还要在与小
  • 软件工程概论作业1

    1需要网站系统开发需要掌握的技术 1 gt html与css网页开发基础 2 gt jsp语言 3 gt javaBean技术 4 gt servlet技术 5 gt 数据库的操作技术 2本次课堂测试的程序源代码 1 xff09 登陆页面
  • lisp填写明细表对话框_中望机械绘图中,明细表功能的试用技巧

    在机械设计过程中 xff0c 明细表 即 BOM表 是CAD设计图纸中的重要组成部分 xff0c 它包含了图纸中所有零件的类型 序号 名称 材料 代号 规格 数量以及重量等信息 xff0c 是指导物流部门和生产部门采购的关键文件 xff0c
  • Ubuntu16.04 中文乱码问题解决

    Ubuntu16 04 中文乱码问题解决 要适配一个服务 xff0c 用了mysql5 7的版本 xff0c 最新的Ubuntu适配起来头秃 xff08 直接用mysql8 0又出现jdbc接口修改的问题 xff09 xff0c 所以直接切
  • Centos 安装 kubectl kubelet kubeadm

    cat lt lt EOF gt etc yum repos d kubernetes repo kubernetes name 61 Kubernetes baseurl 61 https mirrors aliyun com kuber
  • 51单片机 中断控制蜂鸣器

    51单片机 中断控制蜂鸣器 单片机通过使用外部中断控制蜂鸣器 include lt reg51 h gt define uint unsigned int define uchar unsigned char 定义蜂鸣器连接的引脚 sbit
  • 正则表达式的分组

    一 概念 分组 我们已经提到了怎么重复单个字符 xff08 直接在字符后面加上限定符就行了 xff09 xff1b 但如果想要重复一个字符串又该怎么办 xff1f 你可以用小括号来指定子表达式 也叫做分组 xff0c 然后你就可以指定这个子
  • linux 触控板 不识别,关于Ubuntu下触摸板失灵的解决方法一例

    最近突然发现Ubuntu下触摸板失灵了 xff0c 从网上找方法 xff0c 什么换驱动 xff0c 改代码 xff0c 都试过了 xff0c 结果不仅没修好反而系统瘫了 后来看到有人说重启电脑 xff0c 我就一遍一遍重启 xff0c 还
  • 通达OA应用中心使用手册(脚本编写指南)

    脚本编写必备基础 1 1 什么是脚本 脚本是一段 PHP 代码 xff0c 可以被应用中心执行以实现特定功能 应用中心支持通过脚本实现以下功能 xff1a 自定义计算函数 自定义提取触发器 自定义回填触发器 编写脚本对于应用中心来说不是必须
  • 常用HTTP消息头

    Cache control Cache Control 是最重要的规则 这个字段用于指定所有缓存机制在整个请求 响应链中必须服从的指令 这些指令指定用于阻止缓存对请求或响应造成不利干扰的行为 这些指令通常覆盖默认缓存算法 缓存指令是单向的
  • 用rplidar建图 运行rbx1_nav/gmapping_demo.launch报错

    1 rplidar开启 2 turtlrbot bringup 3 运行 roslaunch rbx1 nav gmapping demo launch 报如下错误 xff1a MessageFilter target 61 odom Dr
  • FreeRTOS 和uCOS II的简单比较

    转载 xff1a http www viewtool com bbs forum php mod 61 viewthread amp tid 61 114 这是两种RTOS 现在粗略比较一下 freeRTOS比uCOS II优胜的地方 xf
  • ubuntu配置XManager可用

    前提 xff1a 确保XManager所在PC和ubuntu所在主机的网络可相互访问 一 配置ubuntu 1 安装gdm软件 sudo apt get install gdm 安装后配置成默认的light模式即可 2 查看是否已经安装 s
  • ROS 自定义消息类型

    引言 学习ROS的过程中 xff0c 在话题的发布与订阅之间 xff0c 我一直在思考 xff0c 我们能不能定义自己的话题名 xff0c 甚至在编写我们自己的ROS软件包时 xff0c 定义我们自己的消息类型 首先能不能定义自己的话题名
  • char ch= 中 什么意思java_问一下java里的char到底是什么

    我们上课用的联系学java的软件是readytoprogramJAVAIDE xff0c 学到char变量的时候出了点问题 xff0c 教材上教的是让我们输 xff1a charch1 ch2 ch3 ch1 61 c readChar c
  • 理科大学可能类似纹路里

    11月5日 xff0c 第二届上海市政府新闻办公室推出全新形象片 上海 恒新之城 xff0c 以更为开放 更求创新 更讲包容的姿态展示新时代的风采 xff0c 迎接的到来 开放 创新 包容已成为上海最鲜明的品格 xff0c 这种品格是新时代
  • 三星 S10 运行 Ubuntu 系统

    导读DeX 是一种模仿桌面操作系统的用户 UI 界面 xff0c 把支持 DeX 的三星手机用数据线连上外置显示器 xff0c 用户就可以获得一种类似桌面系统的使用体验 三星 S8 Note 8 S9 Note 9 S10 系列都支持 De
  • Ubuntu的妥协将支持精选的32位应用

    据外媒Tom 39 s hardware xff0c Ubuntu开发人员Canonical在早先的时候宣布Ubuntu 19 10将不再更新32位软件包和应用程序 xff0c 引来了诸多应用开发者的不满 现在 xff0c Ubuntu方面
  • Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在

    Jdk升级到11引起的问题 xff1a 程序包javax xml bind annotation不存在 Jdk12 都发布了 xff0c 我也下载一个玩一玩吧 刚准备要下载 xff0c 发现之前已经下载了一个11 xff0c 那就11 吧