"Form" 在 Web 应用程序中启动时无法预加载:"Form" 。java.lang.NoSuchMethodError: org.springframework.core.io.Resource



嗨,我是springMVC的新手。我正在springMVC中开发一个简单的表单,其中出现了以下错误。从两天以来,我一直在努力解决这个问题,但无法解决。请帮我解决这个问题,这样我才能取得更大的进步。我认为这是由于任何jar文件,但无法找到正确的答案。以下罐子我正在使用:

aopalliance-1.0罐

commons-dbcp-1.1-rc2.jar

普通日志-1.2.jar

普通池-1.1罐

javax.servlet-api-3.1.0.jar

jstl-1.2.jar

春季操作-4.2.0.RELEASE.jar

弹簧-外壳-3.0.5.RELEASE.jar

spring-content-3.1.1.RELEASE.jar

弹簧芯-4.2.2.RELEASE.jar

弹簧-4.2.2.RELEASE.jar

spring-web-4.2.2.RELEASE.jar

spring-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";    
}
}

问题是您正在混合来自5个不同版本的Spring的jar。您使用的是3.0.0、3.0.5、3.1.1、4.2.0和4.2.2版本的罐子,这些罐子显然会坏掉。永远不要混合属于一个框架的不同版本的jar。

在这个时代,建议使用像Maven或Gradle这样的依赖管理工具/构建工具。这样,您就不需要为某个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'
}

除了管理依赖关系,这些工具还可以帮助您完成许多其他事情。查看文档和不同的插件,了解这些工具将如何帮助您。它至少可以让您在搜索正确的依赖关系组合时省去很多麻烦。

相关内容

最新更新