2017-10-12 39 views
0

嗨,我是新的春天MVC。我正在開發一個簡單的形式在春天MVC中,我收到以下錯誤。由於2天我努力解決這個問題,但無法解決這個問題。請幫我解決這個問題,以便我可以取得進一步的進展。我認爲它是由於任何jar文件,但無法達到正確的答案。下面我用罐子:「Form」在Web應用程序啓動時無法預加載:「Form」。 java.lang.NoSuchMethodError:org.springframework.core.io.ResourceEditor

aopalliance-1.0.jar

公地DBCP-1.1-rc2.jar

共享記錄-1.2.jar

commons-pool的-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";  
    } 
} 
+0

使用同一個版本(Spring)的jar來忽略web應用程序開發中的兼容性問題,或者使用Maven.and並顯示來自** Controller **類的一些額外的代碼。 –

+0

增加了studentcontroller.java。當只包含jar文件比在POM.xml中需要Maven依賴時簡單嗎? –

+0

它似乎是版本兼容性錯誤,如果您不想使用maven,請使用所有jar的最新版本。至少從maven網站下載最新版本的jars https://mvnrepository.com/ –

回答

0

的問題是,你是從5個不同版本的春天的混合罐。你正在使用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' 
} 

除了管理依賴關係之外,這些工具還可以幫助您完成許多其他任務。檢查文檔和工具的不同插件,瞭解它們將如何/可以幫助您。它至少可以爲您節省很多頭疼的問題,以尋找正確的依賴關係組合。

+0

感謝這個偉大的想法,但我想知道,如果我們不需要在maven(pom.xml)中定義版本,而不是爲什麼您定義了最後3個依賴關係(如servlet,jstl和dbcp)中的版本? –

+0

我沒有說你不需要定義版本,你不需要指定所有需要的(傳遞)依賴關係 –

+0

現在我正在使用Maven,但「未找到超類」javax.servlet.http.HttpServlet「 Java Build Path「,所以有人告訴我從運行時選擇服務器名稱....但eclipse正在說要再次註冊服務器...我是否需要在eclipse中再次配置weblogic服務器?我已經在我的eclipse上配置了weblogic服務器... –

相關問題