2017-03-19 6 views
0

は私が含まれている実行可能なJARのAを持っているインタフェース:SpringBoot:java -cpを使ってJARから実行可能なJARに@Autowire Beanを置くことはできますか?

JAR AIで
interface FooInterface { 
    void foo(); 
    ... 
} 

FooInterfaceのimplmenetation autowireしようとしているクラスもあります。他のプロジェクトBIでは

class Other{ 
    @Autowired 
    FooInterface fooInterfaceImplementation; 
    ... 
} 

外部ライブラリとしてのjar Aを持っており、 FooInterfaceの実装:

@Component 
class BarClass implements FooInterface { 
    void foo(){...} 
    ... 
} 

私はrunnableを実行しようとしています.JAR Bのクラスを持つJARをcommを使って実行しようとしています。そして、:

java -jar A.jar -cp B.jar 

しかし、それは次の例外で終了します。

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.ocado.cfc.optimisation.AlgorithmInterface' available 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:348) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:335) 
     at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093) 
     at com.ocado.cfc.optimisation.Executable.main(Executable.java:81) 

それはそのように必要なBeanをautowireすることは可能ですか?

ご協力いただきありがとうございます。

答えて

1

-jar-cpを一緒に使用しようとするとできません。 -jarを使用すると、-cpは無視されます。

クラスパスに複数のjarを設定する場合は、両方とも-cpを使用して渡すことができます。次に、起動するメインクラスの名前を入力する必要があります。あなたは春のブートを使用しているように見えることを考えると、それは次のようになります。

java -cp A.jar:B.jar org.springframework.boot.loader.JarLauncher 

ます。また、に興味がある可能性がありますが、設定可能なクラスパスで実行可能なjarファイルを作成することができます春ブーツのPropertiesLauncher

1

はい、クラスパスのJARファイルからBeanを検出またはスキャンするには、クラスレベルの注釈@ComponentScan(basePackages="com.ocado")を使用してパッケージをSpring起動ランチャークラスに追加する必要があります。

関連する問題