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:[,] 程序包javax.xml.bind.annotation不存在
[ERROR]
[ERROR] -> [Help ]
我晕。 刚看到这个错误的时候,简直不可思议,我擦, 怎么这个破程序,这么多bug!!!
可以看到ELDict 类中确实有一个这么的引用:import javax.xml.bind.annotation.XmlAttribute;

虽然是没有用到的,但是却引起的mvn 编译的错误。网上bing一把搜索“程序包javax.xml.bind.annotation不存在”,得到的是:
软件包 javax.xml.bind.annotation不存在-CSDN论坛
-- · 用jaxb的到的类,不能编译,原因是: 软件包 javax.xml.bind.annotation不存在 https://bbs.csdn.net/topics/320208203
新手问题,import javax.xml.bind 编译出错-CSDN论坛
--
软件包 org.apache.commons.fileupload不存在?-CSDN论坛
--
软件包javax.awt,java.swing不存在,请教下原因。谢谢 ...
--
软件包java.until不存在是怎么回事-CSDN论坛
--
查看更多结果
gradle编译报错:程序包javax.annotation不存在 ...
-- · 问题描述: 采用gradle命令编译(gradle build)时,报如下错误: XXXXXXXXXX.java:: 错误: 程序包javax.annotation不存在 import javax.annotation.Nullable; 解决 ... https://blog.csdn.net/yinxing2008/article/details/82185172
解决:Dagger2使用过程中的"程序包javax.annotation不存在 ...
-- · 问题描述:采用gradle命令编译(gradlebuild)时,报如下错误:XXXXXXXXXX.java::错误:程序包javax.annotation不存在importjavax.annota... 博文 来自: yinxing2008 ... https://blog.csdn.net/younghong1992/article/details/53575330
XmlAccessorOrder (Java Platform SE )
-- · 有关其他公共信息,请参阅 javax.xml.bind.package javadoc 中的“包规范”。 包上的 @XmlAccessorOrder 注释可应用于包中的所有类。继承语义的应用如下 ... https://download.oracle.com/.../XmlAccessorOrder.html
java – 包org.apache.hadoop.fs不存在 - 程序园
-- · java – 包com.sun.xml.internal.bind.v2.model.annotation不存在 . java – 包不存在错误 ... 程序包javax.servlet.annotation不存在 . 软件包 javax.servlet 不存在 包android ... www.voidcn.com/article/p-abbxrldb-bup.html
错误: 程序包com.sun.xml.internal.bind.v2.schemagen ...
-- · 问题描述: 用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下载
-- · 软件包 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) -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 removed the Java EE modules: java.xml.bind (JAXB) - REMOVED
Java - OK
Java - DEPRECATED
Java - DEPRECATED
Java - REMOVED
See JEP 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.</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.</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 的一些内容,很多都是实验性质的!。。
Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在的更多相关文章
- java编译错误 程序包javax.servlet不存在javax.servlet.*
java编译错误 程序包javax.servlet不存在javax.servlet.* 编译:javac Servlet.java 出现 软件包 javax.servlet 不存在 软件包javax. ...
- 程序包javax.servlet.http不存在
在maven test项目时,出现错误: java:[7,26] 程序包javax.servlet.http不存在 原因:pom.xml中未引入javax.servlert-api相关的包 <d ...
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException or 程序包 javax.servlet 不存在
遇到下面这个问题 程序包 javax.servlet 不存在 或者 java.util.concurrent.ExecutionException: org.apache.catalina.Lifec ...
- 程序包javax.servlet.annotation不存在
1.错误描写叙述 [INFO] Scanning for projects... [INFO] [INFO] --------------------------------------------- ...
- 解决Idea项目启动报错:程序包javax.servlet.http不存在
报错信息 在没有使用maven的时候,web项目从远程仓库获取下以后,起一次启动往往会报错javax.servlet.http程序包找不到,随之而来的java基础包都将不能使用,报错信息如下: 解决方 ...
- 【转】java编译错误 程序包javax.servlet不存在javax.servlet.*
转载地址:http://blog.163.com/gis_warrior/blog/static/1936171732012811071642/ 编译:javac Servlet.java 出现 软件 ...
- maven install 时提示“程序包 javax.crypto不存在”
但是javax.crypto是在jdk的jre\lib目录下的 解决方案: <compilerArguments> <bootclasspath>${java.home}/li ...
- MAVEN打包报错:com.sun.net.ssl.internal.ssl;sun.misc.BASE64Decoder;程序包 javax.crypto不存在处理办法
以下是pom.xml里面的完整配置,重点是红色的部分,原因是引用的jar是jre下边的,而打包环境用的是jdk下边的jar,所以引用下就OK了.<build> <plugins> ...
- 程序包 javax.servlet 不存在 解决办法
其原因是java编译器没有找到软件包javax.servlet. 下载servlet.jar放到lib下没有效果,后发现需要在jdk中添加,如下: 解决办法: 从tomcat lib目录下拷贝一个se ...
随机推荐
- 几个常用的url生成二维码的接口
找到了几个URL生成的接口,速度上可能会有差别,可试验后选用,我用过第一个,分享: <!doctype html> <html lang="en"> < ...
- hdu4699 Editor(双向链表或双栈对弹)
本题就是两个要点: 1.数据结构的设计.显然可以使用双向链表来做,但是写双向链表的代码复杂度高.其实更好的方法是使用两个对弹的栈来做,而且没必要用STL的栈,就自己开两个数组简单搞一下就好了. 2.最 ...
- Linux下MySQL的数据文件存放在哪里的
mysql> show variables like '%dir%';+-----------------------------------------+------------------- ...
- yahoo的30条优化规则
1.尽量减少HTTP请求次数 终端用户响应的时间中,有80%用于下载各项内容.这部分时间包括下载页面中的图像.样式表.脚本.Flash等.通过减少页面中的元素可以减少HTTP请求的次数.这是提高网页速 ...
- bzoj 2002: 弹飞绵羊 Link-Cut-Tree
题目: Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置, ...
- 洛谷【P3612】[USACO17JAN]Secret Cow Code秘密奶牛码
我对分治的理解:https://www.cnblogs.com/AKMer/p/9728574.html 题目传送门:https://www.luogu.org/problemnew/show/P36 ...
- Puppet master nginx 扩展提升性能(puppet自动化系列4)
puppet使用SSL(https)协议来进行通讯,默认情况下,puppet server端使用基于Ruby的WEBRick HTTP服务器.由于WEBRick HTTP服务器在处理agent端的性能 ...
- JWT(JSON WEB TOKEN) / oauth2 / SSL
1: JWT: 为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景.JWT的声明一般被 ...
- js检测对象属性
In:(检测自身及原型属性) var o={x:1}; "x" in o; //true,自有属性存在 "y" in o; //false "toSt ...
- #np.random.normal,产生制定分布的数集(默认是标准正态分布)
http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.normal.html #np.random.normal,产生制定分 ...