[Error] Spring boot 실행 오류

동민·2021년 3월 9일
0
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
	at com.cs.api.CsApiApplication.main(CsApiApplication.java:13)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	... 1 more
  • 해당 java.lang.NoClassDefFoundError에러는 컴파일 환경에서는 클래스 참조가 되었지만 실행 환경에서는 해당 클래스를 찾을 수 없는 경우에 발생함
  • 그렇기 때문에 코딩할 때는 별 문제 없다가 spring boot나 was로 실행 시킬때 만나거나 서버에 올렸을 때 자주 발생하는 문제이다.
  • 간단히 말해 두 개의 클래스를 생성한 뒤 참조 당하는 쪽의 클래스를 삭제하고 실행하면 동일한 에러가 발생한다.
  • 주로 pc에서 참조된 jar이 서버에는 없거나 클래스 패스 설정이 빠져 있는 경우, 또 jar은 있지만 jar버전이 다른 경우에도 발생한다.

(해결법)

  • build.gradle 파일에서 dependencies설정을 보면 외부에서 가져오는 프로그램이 많다.
  • 이때 path 설정 같은 것이 제대로 되어 있지 않아 필요한 라이브러리를 가져오지 못하기 때문에 발생하는 문제
  • build.gradle 파일의 repositories 부분에 다음과 같은 설정 추가
maven { url "https://www.datanucleus.org/downloads/maven2/"}
  • build.gradle 파일의 dependencies 부분에 다음과 같은 설정 추가
compile group: 'oracle', name: 'ojdbc6', version: '11.2.0.3'
  • 온라인에서 gradle 2.13버전을 다운 받은 뒤 특정 디렉토리에 설치 -> 그 후 eclipse -> windows -> preferences -> Gradle EnIDE 에서 JAVA_HOME 경로를 사용하는 JDK경로로 지정하고 Gradle경로를 위에서 설치한 경로로 설정한다.

  • ojdbc를 사용할 경우

// https://mvnrepository.com/artifact/oracle/ojdbc6
compile group: 'oracle', name: 'ojdbc6', version: '11.2.0.3' 디펜던시 추가
  • 또는 인텔리제이로 실행
profile
BE Developer

0개의 댓글