2017-10-12 14 views
0

こんにちは、私は春のMVCには新しいです。私は次のエラーを取得している春のMVCで単純なフォームを開発しています。2日後、私はこれを難しくしようとしていますが、これを解決できませんでした。私はこれを解決するために私がさらなる進歩を遂げることができるように助けてください。私はそれがどんなjarファイルのためにも正しい答えに達することができないと思います。私が使用していますjarファイルを以下に示します。"Form"はWebアプリケーションの起動時に事前ロードに失敗しました: "Form"。 java.lang.NoSuchMethodError:org.springframework.core.io.ResourceEditor

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

ウェブアプリケーション開発における互換性の問題を無視するためにjarsの同じバージョン(Spring)を使用するか、Mavenを使用し、** Controller **クラスから余分なコードを表示します。 –

+0

studentcontroller.javaが追加されました。単にJARファイルを含めるだけでPOM.xmlのMaven依存関係が必要な場合より簡単ですか? –

+0

バージョン互換性があると思われます.Mavenを使用したくない場合は、すべてのjarの最新バージョンを使用してください。少なくともMaven Webサイトhttps://mvnrepository.com/からjarsの最新バージョンをダウンロードしてください。 –

答えて

0

問題は、春の5つの異なるバージョンから瓶を混合することです。 3.0.0,3.0.5,3.1.1,4.2.0,4.2.2のjarファイルを使用していますが、これは明らかに壊れます。フレームワークに属するさまざまなバージョンの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に古いスナップショット/マイルストーンを使用していましたが、おそらくリリース版を使用したいと思います(ただし、Commons DBCPの代わりにHikariCPを接続プールとして使用することをお勧めします)。

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

この素晴らしいアイデアをありがとうが、私は、servlet、jstl、dbcpのような最後の3つの依存関係でバージョンを定義した理由よりも、maven(pom.xml)でバージョンを定義する必要がないと知りたいのですか? –

+0

私はあなたがバージョンを定義する必要はないと言いましたが、必要な(推移的な)依存関係をすべて指定する必要はありません –

+0

Mavenを使用していますが、 "スーパークラス" javax.servlet.http.HttpServlet " Javaのビルドパス "だから、誰かがランタイムからサーバー名を選択するように言った....しかし、Eclipseはもう一度サーバーを登録すると言っている...私は再びEclipseでweblogicサーバーを構成する必要がありますか?私はすでにEclipseでweblogic serverを設定しています... –

関連する問題