반응형
[에러해결] Linux에서 Java 실행 시 NoClassDefFoundError
- 에러 메시지
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/WorkbookFactory
at TestClass.main(TestClass.java:56)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.WorkbookFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 2 more
- 해결
구글링 해보니 apache poi 버전 호환이 안 되는 것이라고 나와있었다. 윈도우 환경에서는 정상적으로 실행이 되더라도 리눅스에서는 버전 호환을 엄격하게 따지기 때문인지 동작하지 않는다고 하였다. 나의 경우도 그러했다. poi 라이브러리 파일들이 여러 개라면 각각의 버전을 동일하게 맞춰야 하고, 가급적 최신 버전을 사용하라고 나와있었다. 나도 처음에는 버전을 맞춰보려고 하였지만 뭔가 이상함을 느꼈고, 결국 다른 방법으로 해결하였다.
나의 경우는 lib 폴더 하위에 여러 개의 라이브러리를 넣어둔 상황이었다. 위의 에러메시지를 보니 apache poi 라이브러리 하나만 문제가 되는 줄 알았지만, 특정 라이브러리 문제는 아니었던 것 같다.
아래와 같이 컴파일과 런타임 모두 class path로 lib 폴더를 설정해두니 에러가 해결되었다.
javac -cp /home/java/test-project/lib/*:/home/java/test-project/src TestClass.java
java -cp /home/java/test-project/lib/*: TestClass
반응형
'Linux_Ubuntu' 카테고리의 다른 글
[Linux] 리눅스에서 쉘스크립트(.sh)로 Java 프로젝트 실행하는 방법 (0) | 2021.12.17 |
---|---|
[에러해결] Linux에서 javac 컴파일 에러 (오타 없는 경우) (0) | 2021.12.17 |
[Linux] 우분투 터미널로 Java 설치 (환경변수 설정 /etc/profile, ~/.bashrc) (0) | 2021.12.16 |
[Linux] vi, Vim의 차이 및 자주 쓰이는 단축키 (0) | 2021.12.14 |
[기초] Ubuntu는 뭐고 Linux, UNIX는 무엇인가? (+GNU, GNOME) (0) | 2021.11.28 |