我正在使用Spring Framework处理Jenkins插件,并在运行插件时遇到此错误:
java.lang.NoSuchMethodError: org.springframework.util.CollectionUtils.unmodifiableMultiValueMap(Lorg/springframework/util/MultiValueMap;)Lorg/springframework/util/MultiValueMap;
at org.springframework.web.util.HierarchicalUriComponents.<init>(HierarchicalUriComponents.java:84)
at org.springframework.web.util.UriComponentsBuilder.build(UriComponentsBuilder.java:364)
at org.springframework.web.util.UriComponentsBuilder.build(UriComponentsBuilder.java:348)
at org.springframework.web.util.UriTemplate.<init>(UriTemplate.java:69)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:531)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:332)
at org.springframework.social.oauth2.OAuth2Template.postForAccessGrant(OAuth2Template.java:242)
at org.springframework.social.oauth2.OAuth2Template.exchangeForAccess(OAuth2Template.java:144)
at ain.tolva.updates.FBUpdater.<init>(FBUpdater.java:48)
at ain.tolva.FBNotifier.perform(FBNotifier.java:38)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:785)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:726)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1037)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:671)
at hudson.model.Run.execute(Run.java:1766)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:529)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:408)
经过研究,我得出的结论是,尽管指定了一个有问题的方法(Maven)的弹簧框架的版本,但我无法得到最近版本的弹簧版本:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<!-- Spring Social -->
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-core</artifactId>
<version>1.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
<!-- Spring Social Facebook -->
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-facebook</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
我也尝试过各种最新版本,以及其他一些方法。
我的下一个想法是尝试添加最新的Spring io平台,如here所述,它清除了错误,但也在构建时抛出了这个:
SEVERE: Failed Inspecting plugin C:\[REDACTED]\JenFacebook\work\plugins\Facebook.hpl
java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:219)
at java.util.zip.ZipFile.<init>(ZipFile.java:149)
at java.util.jar.JarFile.<init>(JarFile.java:166)
at java.util.jar.JarFile.<init>(JarFile.java:130)
at jenkins.util.AntClassLoader.addPathFile(AntClassLoader.java:502)
at hudson.ClassicPluginStrategy$AntClassLoader2.addPathFiles(ClassicPluginStrategy.java:768)
at hudson.ClassicPluginStrategy.createClassLoader(ClassicPluginStrategy.java:278)
at hudson.ClassicPluginStrategy.createPluginWrapper(ClassicPluginStrategy.java:253)
at hudson.PluginManager$1$3$1.run(PluginManager.java:254)
at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169)
at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
at jenkins.model.Jenkins$7.runTask(Jenkins.java:905)
at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我真的不确定我错过了什么,也找不到任何可以指向正确方向的东西。
答案 0 :(得分:0)
在Spring 3.1中添加了CollectionUtils.unmodifiableMultiValueMap ,但在早期版本中没有出现。 看起来您正在使用spring-core 3.1构建应用程序,但您的运行时环境使用的是旧版本。
也许您最近升级了Spring并且在某个地方有一个陈旧的lib目录,其中包含多个版本的spring-core?根据我的理解,Java总是选择错误的(较旧的)并且我得到这样的错误。确保您的环境中没有任何弹簧核心3.0或更早版本
现在,由于您将spring升级到最新版本,我们的错误已得到解决。
由于某个jar已损坏,您将获得新的执行。 确保您的jar文件没有损坏。如果它已损坏或无法解压缩,则会发生此错误。
您可以按照以下步骤操作:
<强>步骤1 强>
清理.m2 \ repository或从.m2 \ repository目录中删除特定文件夹
<强>步骤2 强>
运行mvn clean install -U
<强>步骤3 强>
您的互联网连接在运行此命令时必须正常工作,有时因连接问题而失败。