嵌入tomcat无法在内部加载DeclareRoles类

时间:2019-02-21 10:05:50

标签: tomcat9 classloading

我有一个基于Maven的Java应用程序。当前,我们正在尝试从Tomcat 7升级到tomcat 9.0.14。在集成测试阶段,我们使用嵌入式tomcat(模拟服务器)。问题是Tomcat 9无法从本身是tomcat嵌入式核心jar的一部分的tomcat注释jar中加载正确的DeclareRoles类。它正在从com.sun.xml.ws:servlet jar文件加载DeclareRoles。我收到以下异常:-

Caused by: java.lang.NoClassDefFoundError: javax/annotation/security/DeclareRoles
    at org.apache.catalina.startup.WebAnnotationSet.loadClassAnnotation(WebAnnotationSet.java:258)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationListenerAnnotations(WebAnnotationSet.java:88)

我尝试在依赖关系的顶部添加tomcat-annotations jar文件,但没有成功。如果我将tomcat注释jar放入jre / lib / ext文件夹,则工作正常。很明显,问题出在加载正确的类文件,但是如何?我们正在使用反射来开始嵌入模拟服务器。因此,我不确定是否可以使用Maven进行修复,看来Java必须以正确的方式加载类。

Class<?> mockHubServerClazz = this.classLoader.loadClass(MockHubServer.class.getName());

0 个答案:

没有答案