java - Spring "hello world"示例错误 : A JNI error has occured & NoClassDefFoundError: org/springframework/beans/factory/ListableBeanFactory

标签 java eclipse spring

我尝试使用 Eclipse 运行 Spring 框架“快速入门”教程: http://projects.spring.io/spring-framework/

我首先在Eclipse中构建了一个Maven项目,并添加了三个.java文件。 代码如下

package hello;

public interface MessageService {
    String getMessage();
}
<小时/>
package hello;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MessagePrinter {

    final private MessageService service;

    @Autowired
    public MessagePrinter(MessageService service){
        this.service = service;
    }

    public void printMessage(){
        System.out.println(this.service.getMessage());
    }

}
<小时/>
package hello;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.*;

@Configuration
@ComponentScan
public class Application {

    @Bean
    MessageService mockMessageService(){
        return new MessageService(){
            public String getMessage() {
                return "Hello World!";
            }};
    }

    public static void main(String args[]){
        ApplicationContext context = 
                new AnnotationConfigApplicationContext(Application.class);
        MessagePrinter printer = context.getBean(MessagePrinter.class);
        printer.printMessage();
    }

}

然后我右键单击 Eclipse 并选择“运行方式 > Java 应用程序”。跳出两条错误信息:

  1. 错误:发生 JNI 错误,请检查您的安装并重试

  2. 发生 Java 异常。

控制台显示

线程“main”中的异常 java.lang.NoClassDefFoundError: org/springframework/beans/factory/ListableBeanFactory 在 java.lang.ClassLoader.defineClass1( native 方法) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:763) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:73) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:368) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:362) 在 java.security.AccessController.doPrivileged( native 方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:361) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在 java.lang.Class.getDeclaredMethods0( native 方法) 在 java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 在 java.lang.Class.privateGetMethodRecursive(Class.java:3048) 在 java.lang.Class.getMethod0(Class.java:3018) 在 java.lang.Class.getMethod(Class.java:1784) 在 sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 在 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 引起原因:java.lang.ClassNotFoundException:org.springframework.beans.factory.ListableBeanFactory 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 19 更多

我尝试在POM文件中添加更多Spring依赖项(包括aop方面bean上下文上下文支持核心...),但这不起作用。

最佳答案

我已经解决了这个问题。事实上这个问题与“发生JNI错误”关系不大。

导致该问题的原因是Eclipse下载Maven依赖jar文件“spring-beans”时出现错误

所以我(手动)删除了“....m2\repository\org\springframework\spring-beans”中的所有文件,并使用Eclipse重建项目。这样问题就解决了。

关于java - Spring "hello world"示例错误 : A JNI error has occured & NoClassDefFoundError: org/springframework/beans/factory/ListableBeanFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41177164/

相关文章:

java - Java 中一个文件可以用多种字符集编码吗?

java - 导入 android 包类时出错

Spring boot jar 在添加 tomcat-embed-jasper 依赖项时无法启动嵌入式服务器

java - Hibernate @Audited 与 @Version 冲突

java - effective Java Item1 - 用于创建对象的静态工厂方法

java - 从作业中获取hadoop集群信息

java - 无法使用 java 上传共享点文件夹上的文档

c++ - 无法运行 Jenkins C++ 工件

java - 如何在eclipse中使用Java控制台更改字符串

java - 在 azure 中找不到该网址的网页