Java 在Spring MVC中包含swagger后,无法在jetty中运行应用程序
我能够运行我的SpringMVC应用程序,直到我为API文档引入了swagger依赖关系 现在,当我在jetty server中运行应用程序时[run as->run jetty],我得到以下错误Java 在Spring MVC中包含swagger后,无法在jetty中运行应用程序,java,spring-mvc,guava,embedded-jetty,swagger,Java,Spring Mvc,Guava,Embedded Jetty,Swagger,我能够运行我的SpringMVC应用程序,直到我为API文档引入了swagger依赖关系 现在,当我在jetty server中运行应用程序时[run as->run jetty],我得到以下错误 java.lang.NoSuchMethodError: com.google.common.collect.Multimaps.asMap(Lcom/google/common/collect/ListMultimap;)Ljava/util/Map; at com.mangofactory
java.lang.NoSuchMethodError: com.google.common.collect.Multimaps.asMap(Lcom/google/common/collect/ListMultimap;)Ljava/util/Map;
at com.mangofactory.swagger.scanners.ApiListingReferenceScanner.getResourceGroupRequestMappings(ApiListingReferenceScanner.java:146)
在网上搜索,我看到关于将com.google.guava
升级到15.0版本的评论,但问题仍然存在
触发错误的更改:pom.xml:
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>0.8.8</version>
</dependency>
芒果工厂
我卡住了,请帮帮我
更新:在tomcat中运行,但不在jetty中运行
更新[11/11]:
将swagger版本升级到0.9.1
将guava版本升级到18.0
mvn dependency:tree
仅显示一个番石榴版本
guava:guava:jar:18.0:compile
即使现在也存在同样的问题 您的类路径上可能有多个Guava依赖项,在这种情况下,Guava 15.0中的Multimaps
类可能被早期Guava版本(甚至Google Collections版本)中的Multimaps
类“隐藏”
您应该运行mvn dependency:tree
,查看Guava 15.0是否是唯一的Guava依赖项,或者是否包含其他版本(通常通过其他库中的可传递依赖项)
如果您发现这样的依赖关系,应该在pom.xml中找到
备注:如果这些库依赖于Guava15.0中删除的类和/或方法,您可能需要升级它们。但如果他们远离@Beta API,这就不应该发生,因为他们应该这样做
编辑:
根据您的mvn dependency:tree
输出,这似乎不是依赖冲突,可能与此有关,Glassfish捆绑了不同版本的番石榴?您没有使用Glassfish,但可能需要查看应用服务器可能添加到类路径的依赖项
更多信息:
-
-我很抱歉给这么一篇老文章添加内容,但两年后我又遇到了同样的问题。
似乎swagger webmvc引用了maven依赖关系树中未列出的依赖关系。这可能是因为该项目(及其后续项目springfox-swagger2)在内部使用Gradle而不是Maven
帮助我的解决方案是在(我的两个)springfox依赖项中添加以下对guava的排除:
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
番石榴
番石榴
谢谢,我将分析并返回依赖关系树。我记得我在EclipseIDE上的pom.xml中的依赖关系层次结构中检查了这一点。但让我再检查一下mvn依赖项:tree只显示了一个番石榴版本。请在帖子中查看我的更新谢谢,很遗憾我不能再做一次+1:)。。一旦我发现同样的问题,我会接受。谢谢你,艾蒂安