스프링 빈이 있습니다.빈을 인스턴스화 할 때 Spring에서 NoClassDefFoundError를 throw합니다.
@Component
public class Omg {
public void omg() throws IOException {
HttpServletRequest request = null;
InputStream is = request.getInputStream();
is.read();
}
}
서블릿 컨테이너에서 사용하고 있지 않습니다. 이것은 단지 예제를위한 것입니다.
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
이 줄 서블릿 API의 런타임 클래스 경로 하지 인 예외를 발생 java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream.
. omg 메소드가 실행될 때 NoClassDefFoundError
이 던져 져야한다는 것을 이해합니다. 질문 : 봄이 콩을 인스턴스화하려고 할 때 왜 던져 질까요? 왜 HttpServlerRequest
이 아닌 일까요?
Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2532)
at java.lang.Class.getDeclaredConstructors(Class.java:1901)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:234)
UPDATE : 그러나이 잘
public class A {}
public class B {
public void method() {
A a = new A();
}
}
public class C {
public static void main(String[] args) {
B b = new B();
}
}
컴파일 모든 세 가지 클래스를 사용할 수 있습니다. A.class를 제거하십시오. C 클래스의 main 메소드를 실행한다. 그것은 잘 작동합니다.
새 서버의 다른 인스턴스에서 실행 해 보았습니까? 또한 어떤 서버를 사용하고 있습니까? 나는 최근에 비슷한 문제가 있었는데 이클립스 서버가 바람둥이가 아니라 엉망이되었다. 이클립스에서 다른 서버에서 프로젝트를 실행하는 것 같다. – sparks
@sparks 웹 서버를 사용하고 있지 않습니다. 이것은 단지 예제를위한 것입니다. – user1745356