2017-08-18 5 views
1

私は、Springを実行し、プロジェクトで実行するときに適切に初期化されるライブラリを持っています。私が他のプロジェクトを開始し、このライブラリを依存関係として追加すると、初期化に失敗します。ここ はコードです:ここではライブラリが依存関係として追加されたときに春の初期化が機能しない

public class CBRepoFactory implements IRepoFactory { 

    private UserActivityRepositoryService userActivityRepositoryService; 

    private ItemInformationRepositoryService itemInformationRepositoryService; 

    public CBRepoFactory() { 
     AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); 
     ctx.register(Config.class); 
     ctx.scan("com.example.db.app"); 
     ctx.refresh(); 
     userActivityRepositoryService = ctx.getBean(UserActivityRepositoryService.class); 
     itemInformationRepositoryService = ctx.getBean(ItemInformationRepositoryService.class); 
     // ctx.close(); 
    } 

    @Override 
    public IRepoClient<UserActivity> getUserActivityRepositoryService() { 
     // TODO Auto-generated method stub 
     return this.userActivityRepositoryService; 
    } 

    @Override 
    public IRepoClient<ItemInformation> getItemInformationRepositoryService() { 
     // TODO Auto-generated method stub 
     return this.itemInformationRepositoryService; 
    } 
    } 

は、依存関係として追加したとき、私はプロジェクトから取得しています例外です。

[main] INFO org.springframework.context.annotation.AnnotationConfigApplicationContext - Refreshing org.spring[email protected]3d71d552: startup date [Fri Aug 18 14:05:41 PDT 2017]; root of context hierarchy 
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/io/support/PropertySourceFactory 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:301) 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228) 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:270) 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93) 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525) 
    at com.ebay.db.app.clientImpl.CBRepoFactory.<init>(CBRepoFactory.java:23) 
    at com.ebay.db.app.clientImpl.RepoFactoryBuilder.createFactory(RepoFactoryBuilder.java:11) 
    at testDBClient.testProgram.main(testProgram.java:15) 
Caused by: java.lang.ClassNotFoundException: org.springframework.core.io.support.PropertySourceFactory 
    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) 
    ... 9 more 

誰でも私にこれを手伝ってもらえますか?

+0

を役に立てば幸い?もしMaven経由であれば、最初のlib jarをMavenリポジトリにどのように公開しましたか?あなたのpomファイルを共有してください。 – dimitrisli

+0

あなたのpomを公開してください。あなたは戦争を展開していますか? – SamDJava

+0

投稿*両方* POM。バージョンの不一致のように見えます。 – chrylis

答えて

0

最初の5行はあなたにすべての必要な情報と答えを見つけることができる場所にしても場所を示している。

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/C:/Users/sukrishna/.m2/test2/org/slf4j/slf4j-simple/1.7.5/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/C:/Users/sukrishna/.m2/test2/org/slf4j/slf4j-log4j12/1.7.10/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory] 

ライン1は、実際の問題を述べています。複数のSLF4Jバインディングこれは、より多くのロガーバージョン/実装が同じことをしようとしていることを意味し、例外が発生します。この競合がライン4

を発生し

2行目と3行目ショーはどこエラーについての詳細情報を探す方法を説明します。そしてもしあなたがそうすれば、彼らは彼らが示唆するものを見るでしょうhere。それが「doesnの場合

<exclusions> 
     <exclusion> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     </exclusion> 
     <exclusion> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     </exclusion> 
    </exclusions> 

:あなたは(私はしかし、それを見ていない)あなたのポンポンで複数の実装を持っている場合は、そうのように、ライン5上にない 1を除外することができますt work:ローカルの.m2リポジトリをパージしてみてください。複数のロガーがそこにキャッシュされている可能性があります。パージした後(

mvn dependency:purge-local-repository 

1は私と一緒に正常に動作します。つまり、それはまだ怒鳴るコマンドを使用してレポをパージするよりも、結合の問題に実行されている場合しかし、それは空のままになり、再びすべての依存関係をダウンロードしてください:あなたがしていることを行うことができます):それはなぜ起こったか私にはわからない

mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false 

、あなたのポンポンを投稿していないが、私はいつも余分な依存関係が必要ないので、スプリングブーツで、すでに来てSLF4Jを使用することによって、このような問題を回避します。あなたはそのようにそれをインスタンス化することができます

private final Logger logger = LoggerFactory.getLogger(this.getClass()); 

が、それはあなたがあなたの目のプロジェクトにあなたの最初のlibにjarファイルを追加したのか

+0

私は、後の部分でスローされているNoClassDefFoundErrorについてより心配しています。バインディングに競合がありますが、正しく動作するようです。それは単なる警告です。 – surya

+0

コードを見ることができずに言うのは難しいです。両方のプロジェクトを比較し、どちらが異なるかを見てみましょう。異なるバージョンのSpring親を使用している場合に発生する可能性があります。NoClassDefFoundErrorとそのようなエラーは、春がクラスを見つけることができない場合にも発生します。たぶんあなたはあなたのパッケージなどをスキャンしていないかもしれません。ライブラリ、btwとは何ですか? –

関連する問題