我是Spring框架的新手,我在编译" HelloSpring"时遇到了一些错误。 tutorialscom上的代码。在整个代码中,主类中只有一个警告:
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 HW = (HelloWorld)context.getBean("Hello Spring");
HW.getMsg();
}
}
Eclipse警告我"资源泄漏:' context'永远不会关闭",但对于ApplicationContext类我不知道如何关闭它。任何人都可以帮我吗?
错误是:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:164)
at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:89)
at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableConfigApplicationContext.java:58)
at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:61)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:136)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.tutorialspoint.MainApp.main(MainApp.java:10)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
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)
... 7 more
BTW我的java版本是最新的1.80,如果这很重要的话。
谢谢!
答案 0 :(得分:2)
将commons-logging.jar添加到项目类路径中。这将解决错误。
关于eclipse的警告,你可以把代码放在try块中并关闭finally块中的连接,它会修复警告
ApplicationContext context = null;
try{
context = new ClassPathXmlApplicationContext("Beans.xml");
}
finally{
((ClassPathXmlApplicationContext) context).close();
}
答案 1 :(得分:2)
try-finally
来关闭ApplicationContext
。 Try-with-resources于2011年在Java 7中引入,大约在同一时间人们停止使用XML进行Spring配置。我建议你使用Spring Boot并让自己的生活变得更轻松,但Boot会做很多事情,你可能想要学习很多方法。
答案 2 :(得分:1)
修复错误:将commons-logging.jar文件添加到项目类路径中。这将解决问题。
修复资源泄漏:您必须注册关闭挂钩。您可以在此处找到更多详细信息。
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-application.html
希望这会有所帮助:)