Jetty报错 java.lang.TypeNotPresentException: Type org.eclipse.jetty.maven.plugin.JettyRunMojo not present

java.lang.TypeNotPresentException: Type org.eclipse.jetty.maven.plugin.JettyRunMojo not present

背景:基于maven,jetty的注入为pom依赖。

解决:如果直接坐标版本写成${jetty.version},会自动下载最新版本的jetty。

       这也造成了错误的原因,就是与你的jdk版本不兼容。

       所以要手动指定版本,上网查询你当前的jdk支持的jetty版本即可。

java.util.ServiceConfigurationError: org.apache.juli.logging.Log: Provider org.eclipse.jetty.apache.jsp.JuliLog not a subtype

背景:因为该项目使用了 Tomcat jdbc connection pool 其中有两个 jar 包 tomcat-jdbc.jar 和 tomcat-juli.jar.Jetty 服务器使用了不同的类加载器实例加载了两个类,导致继承关系不存在了.

解决:在 maven 配置中将 tomcat-juli 的依赖 scope 改为 provided,Jetty 服务器已经提供了. 这样在WebAppClassLoader 尝试自己加载org.eclipse.jetty.apache.jsp.JuliLog时会失败,进而委托父类加载器,这样org.apache.juli.logging.Log及其实现org.eclipse.jetty.apache.jsp.JuliLog两个类就是同一个加载器加载了.

通俗来说就是把maven中的pom文件的scope改成provided。

 

猜你喜欢

转载自blog.csdn.net/ILoveZhc/article/details/80449853