Spring应用程序 - 应用程序上下文IOC

时间:2016-02-10 04:40:25

标签: spring

我正在尝试弹簧框架。这是我的第一个基本春季应用程序。我正在关注javatpoint教程。但是我收到了一个错误。有人可以帮我解决吗。我的代码如下

Student.java

package com.javatpoint;

public class Student {
private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public void displayInfo(){
    System.out.println("Hello: "+name);
}
}

Test.java

package com.javatpoint;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class Test {
public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

    Student student=(Student)context.getBean("studentbean");
    student.displayInfo();
}
}

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

<bean id="studentbean" class="com.javatpoint.Student">
<property name="name" value="Archana Ravindran"></property>
</bean>

</beans>

错误

  

2016年2月10日上午9:56:39   org.springframework.context.support.AbstractApplicationContext   prepareRefresh INFO:刷新   org.springframework.context.support.ClassPathXmlApplicationContext@3aa9f827:   启动日期[Wed Feb 10 09:56:39 IST 2016];上下文层次结构的根   线程&#34; main&#34;中的例外情况java.lang.NoClassDefFoundError:   org / springframework / asm / ClassVisitor at   org.springframework.context.support.AbstractRefreshableApplicationContext.customizeBeanFactory(AbstractRefreshableApplicationContext.java:218)     在   org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)     在   org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:465)     在   org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:395)     在   org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139)     在   org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83)     在com.javatpoint.Test.main(Test.java:15)引起:   java.lang.ClassNotFoundException:org.springframework.asm.ClassVisitor     在java.net.URLClassLoader $ 1.run(未知来源)at   java.net.URLClassLoader $ 1.run(未知来源)at   java.security.AccessController.doPrivileged(Native Method)at   java.net.URLClassLoader.findClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)at   sun.misc.Launcher $ AppClassLoader.loadClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)... 7更多

我的 .classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="con" path="melibrary.com.genuitec.eclipse.lib.spring3.MYECLIPSE_SPRING30_CORE"/>
    <classpathentry kind="lib" path="D:/Spring/spcorejars/org.springframework.beans-3.0.1.RELEASE-A.jar"/>
    <classpathentry kind="lib" path="D:/Spring/spcorejars/org.springframework.core-3.0.1.RELEASE-A.jar"/>
    <classpathentry kind="lib" path="D:/Spring/spcorejars/org.springframework.asm-3.0.1.RELEASE-A.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

Error that I am getting    External Jar addition

2 个答案:

答案 0 :(得分:1)

您的问题的解决方案

  1. 在为SpringFramework版本3.X及更高版本构建时,建议使用 Bill of Materials 并下载工作区类路径中的所有JAR文件
  2. 在你的情况下,你在类路径中缺少asm.jar,因此你得到了这个例外。请从here
  3. 下载
  4. 此外,您的ClassNotFoundException的永久解决方案,在您的eclipse中,您单击CTRL + SHIFT + T,它将打开包含在Jars中的类文件。在您的情况下,您将搜索ClassVisitor,如图所示。open type。如果您使用的是 Java 7和Java 8版本,则无需添加此jar文件。它已经内置,如上图所示。 JDK 7
  5. 如果您使用的是备用JAVA版本,则必须从maven central repository下载asm-all-5.0.4.jar并放入类路径中。
  6. 请参阅figure given below以放入您的课程路径。
  7. 请在类路径中添加apache commons logging jar文件

答案 1 :(得分:0)

简要回答您的评论问题

  1. Springframework需要依赖项(jar文件)才能成功执行程序。
  2. 以精心设计的方式

    1. 通常,基本的java程序不需要任何第三方库作为依赖项。您需要在IDE中导入您的jdk,这将照顾一切。
    2. 当你使用其他框架如spring,struts,JSF时,你会暴露给开源和外部世界,这需要多个依赖关系来运行你的java程序。像maven,gradle,m2e插件这样的构建工具(在你的IDE中)在处理这些依赖项方面做得非常出色。
    3. 如果要查找依赖项,可以执行这些构建工具提供的命令。
    4. 每个框架都是以解决特定解决方案的方式设计/架构的。但请记住,所有这些框架都是在100%java中开发的。 JDK版本可能采用不同的维度改进,以函数编程的形式使您的生活更简单。但是你的OOPS概念和Java基础知识将从不更改。