Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将gwt从2.1.1升级到2.8.0:ServiceConfigurationError:org.apache.juli.logging.Log:Provider org.eclipse.jetty.apache.jsp.JuliLog不是子类型_Java_Gwt_Classloader - Fatal编程技术网

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

Java 将gwt从2.1.1升级到2.8.0:ServiceConfigurationError:org.apache.juli.logging.Log:Provider org.eclipse.jetty.apache.jsp.JuliLog不是子类型,java,gwt,classloader,Java,Gwt,Classloader,在将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\

在将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
我发现其他一些帖子也有类似的信息,比如或,但情况似乎有所不同: 我不使用Maven或Ant,只使用纯IntelliJ,我没有参考任何Tomcat库,并且我不知道我们的应用程序中有任何JSP

我通过调试发现,第一个类加载器
com.google.gwt.dev.shell.jetty.JettyLancher$WebAppContextWithReload$WebAppClassLoaderExtension
加载类
org.eclipse.jetty.apache.jsp.JuliLog
包括接口
org.apache.juli.logging.Log

然后,稍后的接口
org.apache.juli.logging.Log
sun.misc.Launcher$AppClassLoader加载,由

org.eclipse.jetty.webapp.WebAppContext.startContext()
它调用

org.eclipse.jetty.jsp.JettyJspServlet
例如

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


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

最近升级到GWT 2.8.0时,我看到了这个错误。请尝试从项目中排除jetty apache Jsp相关依赖项

您可能还会看到其他与jetty相关的问题,因此也请确保您使用的jetty版本与GWT 2.8.0使用的版本完全相同


我现在在手机上,无法添加更多细节,但我希望这能成为一个有用的方向。如果您仍然看到问题,请添加您的评论,然后我会在我的笔记本电脑上查看并更新答案。

在添加
gwt test utils:0.53
dependency(使用gwt 2.8.1)

我从gwt版本2.4升级到2.8.2时也遇到此错误

杰克的回答帮助了我

为了解决这个问题,我在我的项目上运行了一个maven依赖关系树,以找出什么引用了jetty的ApacheJSP

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

在输出文件中查找类似的内容:
-jetty:apachejsp:jar:9.2.14.v20151106:compile

然后往树上看,看看它是从哪里来的。就我而言,它来自于:

+- 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>  

com.google.gwt
gwt开发
${gwt.version}
org.eclipse.jetty
apache jsp

这对我有用。谢谢:)

我正在使用ant,找到的所有关于此错误的信息都表明类路径中有两个版本的Juli日志,但每次搜索都只找到了gwt-dev.jar。生产构建工作正常,但开发模式不需要gwt-dev.jar

构建过程的一部分是将JAR从本地lib目录复制到war/WEB-INF/lib以打包到war中。ant脚本指向用于调试的本地lib目录,而不是用于war文件的目录。尽管war位置没有作为类路径列在ant文件中,但它仍在加载它


最终,gwt-dev.jar与复制的版本本身发生了冲突。

在我们的项目中,我根本没有发现任何与Jetty相关的依赖关系。然而,我现在将休假几周,一些同事将接管这项任务。我们决定将我们的项目减少到最小的项目,并重新尝试迁移。我尝试从GWT 2.1.1升级到2.6.1以减少更改量,但遇到了另一个异常,它似乎与GIN/Guice有关。问题依赖项不是来自您的直接依赖项,它可能是一个可传递的依赖项。如果您使用的是gradle,您可以轻松地将其从所有项目中排除。