만쥬의 개발일기

gson은 json 파일의 내용을 읽어서 java 객체로 만들어주는 라이브러리다.

<code />
implementation 'com.google.code.gson:gson:2.8.9'

위와 같이 build.gradle에 의존성을 추가하면 사용 가능하다.

 

그러나 해당 라이브러리를 참조하는 과정에서 오류가 생길 때가 있었다.

 

intellij등의 IDE를 통해 자바 프로젝트를 실행하면 라이브러리를 잘 참조했으나, jar 파일로 만들어 실행하면 다음과 같은 에러가 뜨는 것이었다.

<code />
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에 작성하고 해결하였다.

<java />
tasks.jar{ duplicatesStrategy = 'exclude' from{ configurations.runtimeClasspath.collect{it.isDirectory() ? it : zipTree(it)} } manifest{ attributes( 'Main-Class': 'Potatonet.PortScan.Main' ) } }
profile

만쥬의 개발일기

@KangManJoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!