Spring中org.springframe ewark.beans.factory.support.Default Listable BenFactory.解決方法.

2744 ワード

【 , 】

Spring, .

Eclipse EE Spring IDE

Spring framework 3.0.6 http://www.springframework.org/

, CSDN , Spring 3.0.5 : http://download.csdn.net/detail/lzgame/3548052, 8

, Spring framework , User Library,

System library(added to the boot class path) . . .

,

( )

publicclassTestBatch{
    private static ApplicationContext context;
    @SuppressWarnings("unchecked")
    publicstaticvoid main(finalString[] args){
            context =newClassPathXmlApplicationContext("/META-INF/spring/applicationContext.xml");
            try{
                @SuppressWarnings("unused")
                TestBatch app =newTestBatch();
            }catch(Exception ex){
                ex.printStackTrace();
            }
    }
    publicvoidTestBatch(){/** Do Something using the context **/}
}

:ハローHow are you
しかし、この でトラブルに いました。 はUser Library( の )を る 、System libraryにチェックをつけました。 として のようなエラーが しました。
ここで きたものです
Caused by:java.lang.Null PointerException aorg.springframe ork.beans.factory.support.DefaultListable BenFactory.(Default Listable Beable Factory.java:106)…7 more
ソースコードを たら、こうなります。
static{
    ClassLoader cl =DefaultListableBeanFactory.class.getClassLoader();
    try{
        javaxInjectProviderClass = cl.loadClass("javax.inject.Provider");//Line 106
    }
    catch(ClassNotFoundException ex){
        // JSR-330 API not available - Provider interface simply not supported then.
    }
}
ソースコードの は:
Class Loader cl=DefaultListable BeanFactory.class.get Class Loader(); に ります
インターネットを しました。 の も ったことがあります。
http://stackoverflow.com/questions/2272354/why-do-i-get-a-nullpointerexception-when-initializing-spring
にget Class Loaderの を しました。
http://blog.chenlb.com/2009/06/java-classloader-architecture.html
このDefault Listable BenFactoryはBootStrapを じて ローディングして、get Class Loader()の にnullに ります。
JDKにも があります
「public Class Loader()get Class Loader()はこのクラスのクラスのキャリアに ります。nullを してガイドクラスのキャリアを している があります。クラスがブートクラスのキャリアによってローディングされたら、この はこのような でnullに ります。」
よく えてみると、ここが っていました。System libraryにチェックをつけました。Default Listable BenFactoryはシステムJarとしてBootStrapを じて ロードされます。
これを したらいいです。