0

Web アプリで Spring Java ベースの構成を使用しています。問題があります。

私の構成ファイルでは、インポートを行って他のJava構成ファイルを取得しています。

テスト ケースを実行すると、すべてのテスト ケースに合格します。テスト ケースでは、Aplication を使用して Bean を取得しています。私はそこに何の問題もありません。しかし、サーバーで実行するように指示すると、構成の1つが存在しないと言われています。したがって、インポートは機能しません。しかし、コードを ctrl + クリックすると、その構成コードに移動できます。

私はTomCatバージョン7.0を使用しており、mavenを使用して他のすべての依存関係を取得しています。

スタック トレースは次のとおりです。

INFO: Initializing Spring root WebApplication
Jul 18, 2012 4:56:28 PM org.apache.catalina.core.Standard Start
SEVERE:      to   of      
org.springframework.web..Loader
org.springframework.beans.factory.BeanDefinitionStore: Failed to load bean :     
com.Hello.World.HelloWorldConfig; nested  is     
java.io.FileNotFound:  path resource [com/hello/configs/MyConfig.] cannot be opened because it does not exist
at org.springframework..annotation.ConfigurationPostProcessor.processConfigBeanDefinitions(ConfigurationPostProcessor.java:267)
at org.springframework..annotation.ConfigurationPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationPostProcessor.java:203)
at org.springframework..support.AbstractApplication.invokeBeanFactoryPostProcessors(AbstractApplication.java:622)
at org.springframework..support.AbstractApplication.refresh(AbstractApplication.java:451)
at org.springframework.web..Loader.configureAndRefreshWebApplication(Loader.java:385)
at org.springframework.web..Loader.initWebApplication(Loader.java:284)
at org.springframework.web..Loader.(Loader.java:111)
at org.apache.catalina.core.Standard.Start(Standard.java:4779)
at org.apache.catalina.core.Standard.startInternal(Standard.java:5273)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

Caused by: java.io.FileNotFound:  path resource [com/hello/configs/MyConfig.] cannot be opened because it does not exist
at org.springframework.core.io.PathResource.getInputStream(PathResource.java:157)
at org.springframework.core.type.reading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:49)
at org.springframework.core.type.reading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
at org.springframework.core.type.reading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
at org.springframework.core.type.reading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)
at org.springframework..annotation.ConfigurationParser.processImport(ConfigurationParser.java:317)
at org.springframework..annotation.ConfigurationParser.doProcessConfiguration(ConfigurationParser.java:228)
at org.springframework..annotation.ConfigurationParser.processConfiguration(ConfigurationParser.java:149)
at org.springframework..annotation.ConfigurationParser.parse(ConfigurationParser.java:126)
at org.springframework..annotation.ConfigurationPostProcessor.processConfigBeanDefinitions(ConfigurationPostProcessor.java:263)
... 16 more
Jul 18, 2012 4:56:28 PM org.apache.catalina.core.Standard startInternal
SEVERE: Error Start
Jul 18, 2012 4:56:28 PM org.apache.catalina.core.Standard startInternal
SEVERE:  [/helloWorld] startup failed due to previous errors
Jul 18, 2012 4:56:28 PM org.apache.catalina.core.Application log
INFO: Closing Spring root WebApplication

そして、次のような構成

@Configuration
@Import({MyConfig.})
public  HelloWorldConfig {

@Autowired
public MyName myName;

@Bean
public MyModel myModel() {
    MyModel bean = new MyModel();
    bean.setMyName(myName);     
    return bean;
}
}

何が欠けているのかわかりません。

更新

Eclipse で MyName プロジェクトを閉じると機能せず、開くとプロジェクトが機能することに気付きました。ただし、MyModel プロジェクトは、ローカル ディスク上の myname プロジェクトに依存するべきではありません。Myname プロジェクトの jar を作成し、中央リポジトリにプッシュしました。したがって、レポからjarを取得する必要があります。そのため、ローカル ディスクのコンテンツとの関係を理解できません。

ありがとう

4

1 に答える 1

1

明らかに、クラスパスに MyConfig.class がありません。

しかし、本当にインポートしMyConfigますか? 使うものMyModelです。第二に、なぜ配列パラメータを使用するの@Importですか?

いずれにせよ、これはデプロイの問題のように見え、インポート アノテーションとは無関係である可能性があります。したがって、プロジェクトの設定をチェックして、探しているクラスが実際にエクスポートされているかどうかを確認してください。

于 2012-07-19T05:57:28.450 に答える