gpt4 book ai didi

java - 将 gwt 从 2.1.1 升级到 2.8.0 : ServiceConfigurationError: org. apache.juli.logging.Log : Provider org. eclipse.jetty.apache.jsp.JuliLog 不是子类型

转载 作者:行者123 更新时间:2023-11-29 02:57:42 24 4
gpt4 key购买 nike

将gwt从2.1.1版本升级到2.8.0后,出现错误信息

2017-04-20 12:59:19.551:WARN:oejuc.AbstractLifeCycle:main: FAILED c.g.g.d.s.j.WebAppContextWithReload@341fbaf1{/,file:/C:/Users/xxx/.IntelliJIdea2017.1/system/gwt/xxx.97baa614/xxx.fdf824a8/run/www/,STARTING}{C:\Users\xxx\.IntelliJIdea2017.1\system\gwt\xxx.97baa614\xx.fdf824a8\run\www}: java.util.ServiceConfigurationError: org.apache.juli.logging.Log: Provider org.eclipse.jetty.apache.jsp.JuliLog not a subtype
java.util.ServiceConfigurationError: org.apache.juli.logging.Log: Provider org.eclipse.jetty.apache.jsp.JuliLog not a subtype

我发现其他一些帖子也有类似的信息,比如 thisthis ,但情况似乎有所不同:我不使用 Maven 或 Ant,只使用纯 IntelliJ,我没有引用任何 Tomcat 库,我不知道我们的应用程序中有任何 JSP。

我通过调试发现首先是类加载器com.google.gwt.dev.shell.jetty.Jettylauncher$WebAppContextWithReload$WebAppClassLoaderExtension加载类org.eclipse.jetty.apache.jsp .JuliLog 包括接口(interface) org.apache.juli.logging.Log

然后,后面的接口(interface)org.apache.juli.logging.Log

间接触发的 sun.misc.Launcher$AppClassLoader加载
org.eclipse.jetty.webapp.WebAppContext.startContext()

调用方法initialize

org.eclipse.jetty.jsp.JettyJspServlet

实例。

我完全不知道为什么 JspServlet 需要初始化,因为应用程序中没有使用 JSP,据我所知,只有几个 Servlet。似乎所有涉及此冲突的类都包含在单个 jar gwt-dev.jar 中,因此我认为不可能通过类路径设置影响任何类加载行为。

知道如何解决这个问题吗?

最佳答案

我从 gwt 从版本 2.4 升级到 2.8.2 时也遇到了这个错误。

Jake W 的回答帮助了我。

为了解决这个问题,我在我的项目上运行了一个 Maven 依赖树来找出引用 Jetty 的 apache-jsp 的是什么。

为了运行依赖树,我在 Eclipse 中创建了一个新的运行配置 -> maven build -> 目标为“dependency:tree -Doutput=/dependency/file.txt”。运行后,控制台输出将显示它保存输出的位置。它应该与您使用 -Doutput 选项引用的位置相同。

在输出文件中查找类似这样的内容:
- org.eclipse.jetty:apache-jsp:jar:9.2.14.v20151106:编译

然后在树中向上看,看看它是从哪里拉进来的。就我而言,它来自于此:

+- com.google.gwt:gwt-dev:jar:2.8.2:compile   
+- net.sourceforge.htmlunit:htmlunit:jar:2.19:compile
\- org.eclipse.jetty:apache-jsp:jar:9.2.14.v20151106:compile

一旦您知道它来自哪里,(假设您使用的是 Maven)您可以在 pom.xml 文件中为它添加一个排除项:

</dependencies>   
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>${gwt.version}</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jsp</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

这对我有用。谢谢 :)

关于java - 将 gwt 从 2.1.1 升级到 2.8.0 : ServiceConfigurationError: org. apache.juli.logging.Log : Provider org. eclipse.jetty.apache.jsp.JuliLog 不是子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43527854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com