Java 11 升级缺少 javax.annotation.security
Posted
技术标签:
【中文标题】Java 11 升级缺少 javax.annotation.security【英文标题】:Java 11 upgrade missing javax.annotation.security 【发布时间】:2019-04-02 10:38:37 【问题描述】:有一个 spring boot 应用程序,我正在升级到 java 11。war 文件部署在以 open-jdk-11 启动的最新 tomcat 9 中。
代码仍然在 Java 8 中编译。首先让它在 Java 11 上可运行,然后从模块 hazzle 开始...
所以我添加了compile 'javax.annotation:javax.annotation-api:1.3.2'
作为依赖,但从 tomcat 产量开始(启动可运行的 jar 给出相同的结果):
Caused by: java.lang.IllegalAccessError: class org.apache.catalina.startup.WebAnnotationSet (in unnamed module @0x51d8cbdd) cannot access class javax.annotation.security.DeclareRoles (in module java.annotation) because module java.annotation does not export javax.annotation.security to unnamed module @0x51d8cbdd
at org.apache.catalina.startup.WebAnnotationSet.loadClassAnnotation(WebAnnotationSet.java:258) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationListenerAnnotations(WebAnnotationSet.java:88) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:67) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
at org.apache.catalina.startup.Tomcat$FixContextListener.lifecycleEvent(Tomcat.java:973) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5154) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1420) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1410) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:834) ~[?:?]
【问题讨论】:
没有官方支持的支持 Java11 的 Spring Boot 版本。 【参考方案1】:你运行的是什么版本的 Spring Boot? Java 11 支持从 2.1 开始 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes
Java 11 支持
Spring Boot 2.1 仍然与 Java 8 兼容,但现在也支持 Java 11。我们配置了持续集成,以针对最新的 Java 11 版本构建和测试 Spring Boot。
【讨论】:
以上是关于Java 11 升级缺少 javax.annotation.security的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV4 中似乎缺少 Imgproc.undistort()