Spring“hello world”示例错误:发生了JNI错误& NoClassDefFoundError:org / springframework / beans / factory / ListableBeanFactory

时间:2016-12-16 04:11:35

标签: java eclipse spring

我尝试使用Eclipse来运行Spring Framework“快速入门”教程 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并选择“run as> Java Application”。跳出了两条错误消息:

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

  2. 发生了Java异常。

  3. ,控制台显示

    线程“main”中的异常java.lang.NoClassDefFoundError:org / springframework / beans / factory / ListableBeanFactory     at java.lang.ClassLoader.defineClass1(Native Method)     at java.lang.ClassLoader.defineClass(ClassLoader.java:763)     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)     at 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)     at java.security.AccessController.doPrivileged(Native Method)     at java.net.URLClassLoader.findClass(URLClassLoader.java:361)     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)     at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)     at java.lang.Class.getDeclaredMethods0(Native Method)     at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)     at java.lang.Class.privateGetMethodRecursive(Class.java:3048)     在java.lang.Class.getMethod0(Class.java:3018)     在java.lang.Class.getMethod(Class.java:1784)     at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)     在sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 引起:java.lang.ClassNotFoundException:org.springframework.beans.factory.ListableBeanFactory     at java.net.URLClassLoader.findClass(URLClassLoader.java:381)     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)     at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)     ......还有19个

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

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。实际上这个问题与" JNI错误发生了很少的关系"。

导致此问题的原因是 Eclipse下载Maven依赖jar文件时发生错误,即" spring-beans"。

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