【问题标题】:NoClassDefFoundError while running the spring application in command prompt在命令提示符下运行 spring 应用程序时出现 NoClassDefFoundError
【发布时间】:2016-04-05 09:10:47
【问题描述】:

下面是我的 Spring 代码。当我尝试编译程序时,所有类都已成功编译,并且在运行程序时出现了NoClassDefFoundError

MainMethodCLass:

package test;

import beans.SpringTest;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
public class Client
{
  public static void main(String [] raja)
  {
    //find xml
    Resource r = new ClassPathResource("resources/spring.xml");
    //load xml into container
    BeanFactory fact = new XmlBeanFactory(r);

    //create test class object
    Object o = fact.getBean("t");
    SpringTest t = (SpringTest)o;
    t.hello();
  }
}

简单 POJO 类:

package beans;
public class SpringTest
{
  public void hello()
  {
      System.out.println("Hello World");
  }
}

包资源中的spring.xml文件:

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
  "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>
 <bean id = "t" class = "beans.Test">
 </bean>

</beans>

当我编译这个程序时它已经成功编译,但是当我编译时出现以下错误:

D:\Corejava>java test.Client
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/io/Resource
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.springframework.core.io.Resource
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.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)
        ... 6 more

【问题讨论】:

  • 不,我没有使用 Maven @Abdelhak
  • 构建项目后你的lib文件夹的内容是什么?
  • @RafikBELDI 我没有使用任何 IDE 只是我下载了 jar 文件并设置了 jar 的类路径并希望在命令提示符下执行。程序正在编译但它没有执行。跨度>

标签: java spring exception


【解决方案1】:

您需要在类路径和 lib 文件夹中包含 jar spring-core-*.jar 文件。
在你的 calss 中,import org.springframework.core.* 全部在核心 jar 文件中。

【讨论】:

    【解决方案2】:

    java.lang.NoClassDefFoundError - 此错误并不意味着 JVM 在类路径中找不到您的类文件。要么它找到了类,但被引用的类必须引用一些未加载的依赖类,或者有多个定义。使用 Maven 加载 Spring 库。

    【讨论】:

      【解决方案3】:

      您的路径中有多个不同版本的org.springframework.core。去掉一个,使用maven下载依赖。

      【讨论】:

        【解决方案4】:

        将你的 spring 库添加到你的类路径

        命令行应该是

        >java -classpath <all the libraries jars here> test.Client
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-13
          • 1970-01-01
          • 2019-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多