gson은 json 파일의 내용을 읽어서 java 객체로 만들어주는 라이브러리다.
implementation 'com.google.code.gson:gson:2.8.9'
위와 같이 build.gradle에 의존성을 추가하면 사용 가능하다.
그러나 해당 라이브러리를 참조하는 과정에서 오류가 생길 때가 있었다.
intellij등의 IDE를 통해 자바 프로젝트를 실행하면 라이브러리를 잘 참조했으나, jar 파일로 만들어 실행하면 다음과 같은 에러가 뜨는 것이었다.
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/Gson
at Potatonet.PortScan.application.APICaller.getIpListWithPortList(APICaller.java:42)
at Potatonet.PortScan.Main.main(Main.java:22)
Caused by: java.lang.ClassNotFoundException: com.google.gson.Gson
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 2 more
이상하게 jar 파일을 만들면 참조를 못하는 문제가 있어, 무한 구글링 끝에,, 다음 코드를 build.gradle에 작성하고 해결하였다.
tasks.jar{
duplicatesStrategy = 'exclude'
from{
configurations.runtimeClasspath.collect{it.isDirectory() ? it : zipTree(it)}
}
manifest{
attributes(
'Main-Class': 'Potatonet.PortScan.Main'
)
}
}
'♾️Language & Framework > ☕Java' 카테고리의 다른 글
[Java] - log4j2를 이용한 로깅 설정 (0) | 2024.01.17 |
---|---|
[Java] - Timestamp 자료형에서 에러가 발생했을 때 (1) | 2024.01.01 |
[Java] - Java 프로젝트 초기 설정 + 자바 버전 변경 (0) | 2024.01.01 |
[Java 기술 면접 대비] - 5. extends VS implements (0) | 2023.11.09 |
[Java] - Lombok이란? (0) | 2023.11.09 |