2017-03-21 12 views
0

Javaプロジェクトを実行しようとするたびにbeans.xmlが見つかりません見つけられた。 NetBeansを使用していて、クラスパスを正しいディレクトリに設定する必要があるかもしれないと読んだら、プロジェクトが正しく実行されません(Eclipseはこれを自動的に行います)。同じライブラリでこの同じプログラムを実行すると、Eclipseで動作します。私の問題がSpring関連かクラスパス関連かどうかは分かりませんが(クラスパスの問題だと思います)Spring/NetBeans - java.io.FileNotFoundException:クラスパスリソース[beans.xml]が存在しないためオープンできません

MainApp.java

package hello; 

import org.springframework.context.support.AbstractApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class MainApp { 
    public static void main(String[] args) { 
     AbstractApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); 

     HelloWorld hello = (HelloWorld) context.getBean("helloWorld"); 
       hello.getMessage(); 
    } 
} 

HelloWorld.java

package hello; 

public class HelloWorld { 
     private String message; 

     public void setMessage(String message) { 
       this.message = message; 
     } 

     public void getMessage() { 
       System.out.println("Message: " + message); 
     } 
} 

beans.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" 
    xsi:schemaLocation = "http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

    <bean id = "helloWorld" class = "hello.HelloWorld"> 
     <property name = "message" value = "Hello World!"/> 
    </bean> 

</beans> 

ST

run: 
    Mar 20, 2017 11:05:04 PM  org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh 
    INFO: Refreshing  org[email protected]4ee285c 6: startup date [Mon Mar 20 23:05:04 EDT 2017]; root of context hierarchy 
    Mar 20, 2017 11:05:04 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
    INFO: Loading XML bean definitions from class path resource [beans.xml] 
    Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [beans.xml]; nested exception is java.io.FileNotFoundException: class path resource [beans.xml] cannot be opened because it does not exist 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:344) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252) 
     at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127) 
     at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93) 
     at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
     at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:613) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:514) 
     at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
     at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
     at hello.MainApp.main(MainApp.java:8) 
    Caused by: java.io.FileNotFoundException: class path resource [beans.xml] cannot be opened because it does not exist 
     at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330) 
     ... 13 more 
    /home/john/.cache/netbeans/8.1/executor-snippets/run.xml:53: Java returned: 1 
    BUILD FAILED (total time: 0 seconds) 

File and Project structures

ありがとうございました。

解決策: NetBeansでは、Beanをインスタンス化するために使用しているbeans.xmlタイプのファイルにパスが含まれている必要があります。私の場合、私は入力する必要がありました:

AbstractApplicationContext context = new ClassPathXmlApplicationContext("/hello/beans.xml"); 

の代わりにちょうど:

AbstractApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); 
+0

あなたの 'beans.xml'リソースは'/hello'の中にあります。 –

+0

@SotiriosDelimanolis [OK]を、それはどこに行く必要がありますか? – John

+0

あなたが望むクラスパスのどこにでも行くことができます。 'ClassPathXmlApplicationContext'でそれを使用しているときは、適切に見つけなければなりません。 –

答えて

0

あなたが使用してそれを参照する必要がありますのでごbeans.xmlhelloパッケージである:

AbstractApplicationContext context = new ClassPathXmlApplicationContext("hello/beans.xml"); 

PS :これをresourcesディレクトリに置くことをお勧めします。

-1

ResourceLoaderリソース (クラスパス、HTTP、ファイル、なし(ApplicationContextのに応じて))をロードする方法の4種類を有しています。 詳細はこちら

関連する問題