“表单”无法在Web应用程序启动时预加载:“表单”。 java.lang.NoSuchMethodError:org.springframework.core.io.ResourceEditor

时间:2017-10-12 18:24:14

标签: java spring spring-mvc servlets jar

嗨,我是Spring MVC的新手。我正在开发一个简单的形式在春季MVC,其中我得到以下错误。从2天我努力唯一这个,但无法解决这个问题。请帮我解决这个问题,以便我可以取得进一步的进展。我认为它是由于任何jar文件但无法得到正确的答案。在我正在使用的罐子之后:

aopalliance-1.0.jar

公地DBCP-1.1-rc2.jar

共享记录-1.2.jar

公地池-1.1.jar

的javax.servlet-API-3.1.0.jar

JSTL-1.2.jar

弹簧AOP-4.2.0.RELEASE.jar

弹簧豆-3.0.5.RELEASE.jar

弹簧上下文3.1.1.RELEASE.jar

弹簧芯4.2.2.RELEASE.jar

弹簧表达-4.2.2.RELEASE.jar

弹簧网络4.2.2.RELEASE.jar

弹簧webmvc-3.0.0.RELEASE.jar

如果需要,我可以发布完整的代码。请告诉我。

<Oct 12, 2017 11:40:32 PM IST> <Error> <HTTP> <BEA-101216> <Servlet: "SM_FormHandling" failed to preload on startup in Web application: "SM_FormHandling".
java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor.<init>(Lorg/springframework/core/io/ResourceLoader;)V
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:117)
    at javax.servlet.GenericServlet.init(GenericServlet.java:240)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:337)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:288)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    Truncated. see log file for complete stacktrace
> 
<Oct 12, 2017 11:40:32 PM IST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID "169334801172819" for task "29". Error is: "weblogic.application.ModuleException: java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor.<init>(Lorg/springframework/core/io/ResourceLoader;)V"
weblogic.application.ModuleException: java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor.<init>(Lorg/springframework/core/io/ResourceLoader;)V
    at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
    at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216)
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
    Truncated. see log file for complete stacktrace
Caused By: java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor.<init>(Lorg/springframework/core/io/ResourceLoader;)V
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:117)
    at javax.servlet.GenericServlet.init(GenericServlet.java:240)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:337)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:288)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    Truncated. see log file for complete stacktrace

StudentController.java

@Controller
class StudentController {

    @RequestMapping(value="/student" ,method=RequestMethod.GET)
    public ModelAndView student(){
        return new ModelAndView("student","command",new Student());
    }

    @RequestMapping(value="/addStudent" ,method=RequestMethod.POST)
    public String addStudent(@ModelAttribute("SpringWeb")Student student,ModelMap model){
        model.addAttribute("name",student.getName());
        model.addAttribute("age",student.getAge());
        model.addAttribute("id",student.getId());
        return "result";    
    }
}

1 个答案:

答案 0 :(得分:0)

问题是你要混合来自5个不同版本的Spring的罐子。您正在使用3.0.0,3.0.5,3.1.1,4.2.0和4.2.2中的罐子,这显然会破坏。切勿混合属于框架的不同版本的罐子。

在这个时代,建议使用依赖关系管理工具/构建工具,如MavenGradle。这样您就不需要为某个jar搜索所需的依赖项。

因此,不要在互联网(或您的本地计算机)上搜索可能协同工作的罐子,而是使用Maven或Gradle为您完成。

使用maven,你会写一个pom.xml,其中包含如下内容。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>groupId</groupId>
  <artifactId>artifactid</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>Your-Project</name>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>4.2.2.RELEASE</spring.version>
  </properties>

  <dependencies>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aop</artifactId>
          <version>${spring.version}</version>
      <dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${spring.version}</version>
      <dependency>
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>jstl</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
      </dependency>
      <dependency>
          <groupId>commons-dbcp</groupId>
          <artifactId>commons-dbcp</artifactId>
          <version>1.4</version>
      <dependency>
  </dependencies>  
</project>

其中包含获取所有正确依赖项所需的所有内容。您无需知道spring-webmvc的依赖项,因为这些依赖项将自动添加。您还使用了commons-dbcp的旧快照/里程碑,您可能希望使用发布版本(尽管我建议使用HikariCP作为连接池而不是Commons DBCP)。

build.gradle中的相同内容。

apply plugin: 'war'

ext['springVersion'] = '4.2.2.RELEASE'

repositories {
    mavenCentral()
}

dependencies {
    compile "org.springframework:spring-aop:$springVersion"
    compile "org.springframework:spring-webmvc:$springVersion"
    compile 'commons-dbcp:commons-dbcp:1.4'
    compile 'jstl:jstl:1.2'
    providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
}

除了管理依赖项之外,这些工具还可以帮助您完成许多其他事情。查看文档和工具的不同插件,了解这些工具如何/可以帮助您。它至少会为您节省很多令人头疼的问题,以寻找正确的依赖关系组合。