2016-06-02 61 views
0

Springフレームワークでは、サーバーとデータベース間の通信が機能しないという問題が発生しました。ClassPathXmlApplicationContextエラー、Springフレームワーク

私が作成したプロジェクトはSpringプロジェクトで、その後Mavenにリファクタリングされています。コードでこのラインで

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("projectName/spring.xml");

私はこのエラーを取得: Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [projectName/spring.xml]; nested exception is java.io.FileNotFoundException: class path resource [projectName/spring.xml] cannot be opened because it does not exist

をしかし、それは存在しません。そして、代わりにClassPathXmlApplicationContext("spring.xml")を書くなど、この問題の解決策を試しました。しかし、これは役に立ちません。その後、Springは自動的にフォルダsrc/main/resourcesを探します。私のプロジェクト構造では、このフォルダを追加してXMLファイルをそこに置くことができないので、これは私のためには機能しません。このフォルダを作成しようとすると、自動的にJava-resourcesフォルダ内に置かれ、EclipseでXMLをそこに置くことはできません。

これは私のプロジェクトがどのように見えるかです: enter image description here

は、春はこのspring.xmlファイルを探す場所私は宣言するための方法はありますか?

答えて

0
new ClassPathXmlApplicationContext(this.getClass().getResource("/spring.xml").getPath()) 

(Javyがクラスパスからリソースをロード行う方法について説明します)ClassPathXmlApplicationContextは、ファイルがクラスパス上にあることを前提としてい

+0

ありがとうございました!これは静的メソッドであるため、新しいClassPathXmlApplicationContext(ClassName.class.getResource( "/ spring.xml")。getPath());に変更されました。 – Abrakanoodle

1

を助けた

希望上記のコードを試してみてください。

ファイルシステムから構成をロードしたい場合は、代わりにFileSystemXmlApplicationContextを使用することを検討してください。このメカニズムを使用してコンテキストをロードすると、現在行っているようにファイルシステムの場所を渡すことができます。

+0

ありがとうございますが、後でサーバーを移動できるようにするため、ファイルの場所を特定するのは避けてください。 – Abrakanoodle

+0

もちろん、あなたのユースケースによって異なります。しかし、ちょうど "それを働かせて"私はこれがあなたを助けるかもしれないと思った。 –

0

春はsrc/main/resourcesを見ていないので、クラスパスを見ています。

projectName/spring.xmlと書く場合は、このファイルをbin/projectName/spring.xmlまたはbuild/projectName/spring.xmlにする必要があります。あなたのビルドフォルダはbinまたはbuildです。

jarファイルを作成する場合、このファイルはjar!projectName/spring.xmlにある必要があります。

ウェブアプリケーションの場合、このファイルはWEB-INF/classes/projectName/spring.xmlである必要があります。

クラスパスにsrc/main/resourcesを追加すると、このフォルダの内容はビルドフォルダに格納されます。 Mavenはクラスパスにsrc/main/resourcesを自動的に追加します。

場合によっては、IDEでプロジェクトを再構築(クリーンアップ)して、そのようなファイルをビルドフォルダに入れる必要があります。

+0

ええと、私は、Springが答えたものから類似した質問に変わったと誤解しているかもしれません。 – Abrakanoodle

関連する問題