Java Spring - 从类路径资源 [Beans.xml] 加载 XML bean 定义 - NoClassDefFoundError
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/30449191/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Spring - Loading XML bean definitions from class path resource [Beans.xml]- NoClassDefFoundError
提问by Dishalan2014
I'm a newbie for Spring and I was referring to this tutorialfor my first Spring project. After follow all the instruction, I try to run the program but I'm having this error.
我是 Spring 的新手,我指的是我的第一个 Spring 项目的本教程。按照所有说明操作后,我尝试运行该程序,但出现此错误。
May 26, 2015 11:42:45 AM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@31221be2: startup date [Tue May 26 11:42:45 CST 2015]; root of context hierarchy
May 26, 2015 11:42:45 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [Beans.xml]
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/expression/ParserContext
at org.springframework.context.support.AbstractApplicationContext.prepareBeanFactory(AbstractApplicationContext.java:553)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:455)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.tutorialspoint.MainApp.main(MainApp.java:9)
Caused by: java.lang.ClassNotFoundException: org.springframework.expression.ParserContext
at java.net.URLClassLoader.run(Unknown Source)
at java.net.URLClassLoader.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 5 more
Any idea where I did the wrong. As I know I was following the tutorial correctly.
知道我哪里做错了。据我所知,我正确地遵循了教程。
CODE
代码
package com.tutorialspoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.getMessage();
}
}
Beans.XML
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="com.tutorialspoint.HelloWorld">
<property name="message" value="Hello World!"/>
</bean>
</beans>
采纳答案by Pramod Karandikar
Check if you have added all the required jars in your classpath.
检查您是否在类路径中添加了所有必需的 jar。
The class org.springframework.expression.ParserContext
lies inside spring-expresssion-YOUR_SPRING_VERSION.jar
Check if you have this jar added on classpath.
该类org.springframework.expression.ParserContext
位于内部spring-expresssion-YOUR_SPRING_VERSION.jar
检查您是否在类路径上添加了这个 jar。
回答by padmender singh
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment). log4j:WARN Please initialize the log4j system properly. Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/expression/PropertyAccessor at org.springframework.context.support.AbstractApplicationContext.prepareBeanFactory(AbstractApplicationContext.java:553) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83) at com.javahonk.client.TestWebService.main(TestWebService.java:19) Caused by: java.lang.ClassNotFoundException: org.springframework.expression.PropertyAccessor at java.net.URLClassLoader$1.run(URLClassLoader.java:372) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:360) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 5 more
log4j:WARN 找不到记录器 (org.springframework.core.env.StandardEnvironment) 的附加程序。log4j:WARN 请正确初始化 log4j 系统。线程“main”中的异常java.lang.NoClassDefFoundError: org.springframework.context.support.AbstractApplicationContext.prepareBeanFactory 处的 org/springframework/expression/PropertyAccessor(AbstractApplicationContext.java:553) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139) at org.springframework.context .support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83) at com.javahonk.client.TestWebService.main(TestWebService.java:19) 由:java.lang.ClassNotFoundException: org.springframework.expression.PropertyAccessor at java.net。 URLClassLoader$1.run(URLClassLoader.java:372) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:361) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader. java:360) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 5 更多
Solution to the above problem:This happens if spring-expression-xxx.Release.jar in not available in your class path. Please add spring-expression-3.2.3.RELEASE or latest version jar in your class path to fix this issue.
上述问题的解决方案:如果 spring-expression-xxx.Release.jar 在您的类路径中不可用,就会发生这种情况。请在您的类路径中添加 spring-expression-3.2.3.RELEASE 或最新版本的 jar 以解决此问题。
回答by ARNAB PRADHAN
I was having the same issue. But I found my mistake.
我遇到了同样的问题。但我发现了我的错误。
My mistake was, I created "Beans.xml"inside com.tutorialspont
package.
我的错误是,我在包内创建了“Beans.xml”com.tutorialspont
。
The solution for me was "Beans.xml"has to be created directly undersrc
folder.
我的解决方案是“Beans.xml”必须直接在src
文件夹下创建。