2017-07-06 9 views
2

私は春のフレームワークの初心者です。私はtutorialscomで "HelloSpring"コードをコンパイルするときにいくつかのエラーが発生しました。コード全体メインクラスで唯一の警告が表示される:「: 『コンテキストは』近いことはありませんリソースリーク」は、しかし、ApplicationContextのクラスのために、私はそれをクローズする方法を知らないリソースリークの解決について

package com.tutorialspoint; 

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class MainApp { 
    public static void main(String[] args) { 
     ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); 
     HelloWorld HW = (HelloWorld)context.getBean("Hello Spring"); 
     HW.getMsg(); 
    } 
} 

Eclipseは私に警告します。誰もそれで私を助けることができますか?

エラーは以下のとおりです。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
    at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:164) 
    at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:89) 
    at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableConfigApplicationContext.java:58) 
    at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:61) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:136) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at com.tutorialspoint.MainApp.main(MainApp.java:10) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 7 more 

はところで、私のJavaのバージョンが最新の1.80で、この問題場合IDKの。 ありがとうございました!

答えて

2
  1. を修正しますチュートリアルより。あなたが97歳で、注釈を付けていない限り、誰もXML設定を使用しません。注釈を使用する。
  2. ApplicationContextを閉じるのにtry-finallyは必要ありません。 Try-with-resourcesは、2011年にJava 7に導入されました。

私は、あなたがSpring Bootを使用してより簡単に自分のことを提案するつもりでしたが、Bootはあなたがおそらく難しい方法を学ぶことを望むたくさんのことをフードの下で行います。

+0

ありがとうございました!あなたが私に送ったリンクを調べます – GitGud

1

プロジェクトのクラスパスにcommons-logging.jarを追加します。これにより、エラーが修正されます。

日食による警告について、あなたはtryブロック内のコードを配置し、finallyブロックで接続を閉じることができますが、オフに起動している場合、それはより良いものを見つけると、警告

ApplicationContext context = null; 
try{ 
    context = new ClassPathXmlApplicationContext("Beans.xml"); 
     } 
finally{ 
    ((ClassPathXmlApplicationContext) context).close(); 

     } 
+0

ありがとうございます! .jarを追加するとプログラムが実行できますが、finallyブロックの 'context'には「コンテキストが変数に解決できません」というエラーがあります。他のライブラリを追加する必要がありますか? – GitGud

+0

コードを更新しました – RSingh

1

エラーを修正するには:プロジェクトのクラスパスにcommons-logging.jarファイルを追加します。問題を解決します。

リソースリークを修正するには、シャットダウンフックを登録する必要があります。詳細はこちらをご覧ください。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-application.html

希望はこのことができます:)

+0

ありがとう!本当に役に立ちます! – GitGud

+0

彼はスプリングブーツを求めなかった。彼はちょうど春から始まったばかりなので、私の答えではBootを使用することをお勧めしませんでした。 –

+0

ここに議論はありません:)もっと将来役立つかもしれない情報を提供してください。 –

関連する問題