使用Spring Social Framework

时间:2016-09-04 03:38:50

标签: java spring maven spring-mvc jenkins

我正在使用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)

我真的不确定我错过了什么,也找不到任何可以指向正确方向的东西。

1 个答案:

答案 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

您的互联网连接在运行此命令时必须正常工作,有时因连接问题而失败。