【问题标题】:Spring Application - Application Context IOCSpring 应用程序 - 应用程序上下文 IOC
【发布时间】:2016-05-20 07:37:23
【问题描述】:

我正在尝试使用 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: 启动日期 [2016 年 2 月 10 日星期三 09:56:39 IST];上下文层次的根 线程“主”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(Unknown Source) 在 java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(未知来源)在 java.lang.ClassLoader.loadClass(Unknown Source) 在 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 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>

【问题讨论】:

  • 来自异常 - 线程“main”中的异常 java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor 看起来你的类路径中没有这个类。您能否发布您正在使用的 pom.xml 或 .classpath 文件?
  • 我没有 pom.xml 文件。我在哪里可以找到 .classpath 文件??
  • 在您的工作区.. 键入 CNTR+SHIFT+R。和类型.classpath。您应该能够找到您的类路径文件。
  • 从错误看来您缺少 'org.springframework.asm' 的 jar 文件。确保您的类路径中包含 jar 文件。

标签: spring


【解决方案1】:

您的问题的解决方案

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

【讨论】:

  • 我也包含了 asm jar。我正在使用 JAVA 7,所以您的第 3 步已经完成。但我仍然收到错误
  • @Learner 显示您使用的是 Java 6 版本。请下载此 jar 文件 asm-all-5.0.4.jar 并将其放在您的类路径中。希望能解决您的问题。
  • 我已经下载了。但是如何在类路径中。我包含了构建路径中的 jar-> 外部 jar,但错误仍然存​​在
  • 我已经这样做了,但我仍然收到错误..我已经用我所做的更新了我的问题
  • 非常感谢。它解决了这个问题。关于为什么添加这些罐子以及何时添加的解释将有很大帮助。因为我尝试了许多使用相同 IDE 和相同设置的基本 Java 程序。但从未出错。
【解决方案2】:

简短回答您的评论问题

  1. Springframework 需要依赖项(jar 文件)才能成功执行您的程序。

精心设计

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2010-09-12
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 2013-04-03
    • 2019-10-22
    相关资源
    最近更新 更多