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)
ありがとうございました。
解決策: NetBeansでは、Beanをインスタンス化するために使用しているbeans.xmlタイプのファイルにパスが含まれている必要があります。私の場合、私は入力する必要がありました:
AbstractApplicationContext context = new ClassPathXmlApplicationContext("/hello/beans.xml");
の代わりにちょうど:
AbstractApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
あなたの 'beans.xml'リソースは'/hello'の中にあります。 –
@SotiriosDelimanolis [OK]を、それはどこに行く必要がありますか? – John
あなたが望むクラスパスのどこにでも行くことができます。 'ClassPathXmlApplicationContext'でそれを使用しているときは、適切に見つけなければなりません。 –