1

別の同僚が Eclipse を使用して作成した TSF から Java プロジェクトをプルしましたが、IntelliJ でプロジェクトを開くたびに、次の実行時例外が発生します。

スレッド「メイン」での例外 org.springframework.beans.factory.BeanDefinitionStoreException: IOException parseing XML document from class path resource [spring.xml]; ネストされた例外は java.io.FileNotFoundException: クラスパスリソース [spring.xml] が存在しないため開けません……

Maven を使用してすべてのプロジェクトの依存関係をダウンロードしましたが、コンパイル時の例外が発生していないため、正常に機能しているようです。

プロジェクト構成設定のほとんどをこのimgur アルバムにアップロードしました。うまくいけば役立つはずです。


Main.java

ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");

Spring.xml

    <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.3.xsd">

        <bean id="ApplicationConfiguration" class="com.XXX.YYY.ZZZ.ApplicationConfiguration" />
        <bean id="TableFactory" class="com.XXX.YYY.ZZZ.TableFactory">
            <constructor-arg ref="ApplicationConfiguration" />
        </bean>
        <bean id="ItemFactory" class="com.XXX.YYY.ZZZ.datagen.ItemFactory"/>        
        <bean id="ItemWritersPool" class="com.XXX.YYY.ZZZ.ItemWritersPool">        
            <constructor-arg ref="ItemWriterFactory" />
            <constructor-arg ref="ApplicationConfiguration" />
        </bean>
        <bean id="ItemWriterFactory" class="com.XXX.YYY.ZZZ.ItemWriterFactory">
            <constructor-arg ref="ApplicationConfiguration" />
            <constructor-arg ref="TableFactory" />
            <constructor-arg ref="ItemFactory" />
        </bean>
        <bean id="ItemReadersPool" class="com.XXX.YYY.ZZZ.ItemReadersPool">
            <constructor-arg ref="ItemReaderFactory" />
            <constructor-arg ref="ApplicationConfiguration" />
        </bean>
        <bean id="ItemReaderFactory" class="com.XXX.YYY.ZZZ.ItemReaderFactory">
            <constructor-arg ref="TableFactory" />
        </bean>

</beans>

プロジェクト.iml

<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="EclipseModuleManager">
    <conelement value="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER" />
    <src_description expected_position="0">
      <src_folder value="file://$MODULE_DIR$/src" expected_position="0" />
    </src_description>
  </component>
  <component name="FacetManager">
    <facet type="Spring" name="Spring">
      <configuration>
        <fileset id="fileset" name="Spring Application Context" removed="false">
          <file>file://$MODULE_DIR$/src/spring.xml</file>
          <file>jar://$MAVEN_REPOSITORY$/io/netty/netty/3.6.3.Final/netty-3.6.3.Final.jar!/org/jboss/netty/container/spring/beans.xml</file>
          <file>jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/3.2.3.RELEASE/spring-context-3.2.3.RELEASE.jar!/org/springframework/scheduling/annotation/AbstractAsyncConfiguration.class</file>
          <file>jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/3.2.3.RELEASE/spring-context-3.2.3.RELEASE.jar!/org/springframework/cache/annotation/AbstractCachingConfiguration.class</file>
          <file>jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/3.2.3.RELEASE/spring-context-3.2.3.RELEASE.jar!/org/springframework/context/annotation/LoadTimeWeavingConfiguration.class</file>
          <file>jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/3.2.3.RELEASE/spring-context-3.2.3.RELEASE.jar!/org/springframework/context/annotation/MBeanExportConfiguration.class</file>
          <file>jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/3.2.3.RELEASE/spring-context-3.2.3.RELEASE.jar!/org/springframework/scheduling/annotation/ProxyAsyncConfiguration.class</file>
          <file>jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/3.2.3.RELEASE/spring-context-3.2.3.RELEASE.jar!/org/springframework/cache/annotation/ProxyCachingConfiguration.class</file>
          <file>jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/3.2.3.RELEASE/spring-context-3.2.3.RELEASE.jar!/org/springframework/scheduling/annotation/SchedulingConfiguration.class</file>
          <file>file://$MAVEN_REPOSITORY$/org/springframework/spring-context/3.2.3.RELEASE/spring-context-3.2.3.RELEASE.jar</file>
        </fileset>
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="inheritedJdk" />
    [-- some items manually removed --]
    <orderEntry type="library" name="Maven: org.springframework:spring-core:3.2.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:3.2.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:3.2.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:3.2.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:3.2.3.RELEASE" level="project" />
    [-- some items manually removed --]
      </component>
    </module>

アドバイスや提案は大歓迎です。前もって感謝します!

4

2 に答える 2

2

あなたの構成ではすべて問題ないように見えるので、小さなプロジェクトを使用して確認したところ、問題は XML ヘッダーで使用している冗長な名前空間に起因する可能性があるようです。

これを次のように変更してみてください。

<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.3.xsd">

このような結果になるには:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

それでもうまくいかない場合は.iml、次のようにしてファイルを微調整することもできます。

org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true". に置き換えることtrueですばやくテストできfalse、IntelliJ にプロジェクトをリロードさせることができます。spring.xmlIntelliJがファイルを無視する理由はわかりませんが、Maven が示唆するように、ソースとリソースに 2 つの別個のディレクトリを使用すると、問題は解消されます。

また、ディレクトリを作成し、そこにファイルsrc/main/resourcesを配置する必要があります。spring.xml

お役に立てれば。

于 2013-07-22T20:48:28.350 に答える
0

これは、作業ディレクトリに問題がある場合があります。このブログ投稿では、問題とその修正方法について説明しています。

IntelliJ は、作業ディレクトリをプロジェクトルートに設定するという点で Eclipse とは異なります。これは、作業中のモジュールの最上位ディレクトリとは異なる場合があります。

これは、作業ディレクトリを に設定することにより、実行構成で修正できます$MODULE_DIR$

これが役立つ場合は、デフォルトの JUnit 実行構成で作業ディレクトリを設定し、残りのすべての実行構成を修正してください。

于 2014-02-12T09:20:56.520 に答える