API 문서화 도구로 swagger 를 세팅하는데 objectMapperConfigurer bean을 생성하다가 예외가 발생하는 경우가 있다. 그러면서 java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper 이런 에러메세지가 나올수있는데 당황하지말고 jackson 의존성이 있는지 확인해보자. 레거시 프로젝트에 swagger 를 설정하고있는데, jackson이 없을거라는 생각은 전혀 못하고있어서 삽질을 좀 했다.
java를 이용하여 개발하다보면 단순 테스트 차원의 짧은 코드를 확인해보고싶을때가 있다. 가령 String#substring 메서드가 첫번째인자를 0부터 받는지.. 두번째인자에 들어가는 인덱스를 포함하는지 제외한는지... 등등 같은 상황이다.나같은 경우는 이럴때 사용하기위한 테스트 프로젝트를 하나 만들어놓고 필요할때마다 main 메서드에 코드를 작성해 돌려보곤한다. 아마 다 비슷하지않을까 생각하는데 java9부터는 jshell 이라는 java shell을 제공해주게됐다. jshell 은 REPL(Read Evaluate Print Loop)을 제공해주기때문에 즉석으로 테스트코드를 터미널에서 작성해보고, 코드결과를 바로 확인할 수 있는 편리함이 있다. java9 이상을 설치하고 환경변수를 잡아주면 bin/..
JDK6로 돌아가고있는 서버를 JDK8로 업그레이드를 해야했다. 자세히말하면 JDK 뿐만아니라 Spring3을 Spring5로, Tomcat6를 Tomcat8로 함께 업그레이드를 진행했다. Spring 버전이 변경되면서 인터페이스자체가 변경된 몇가지 부분외엔 크게 수정이 필요하지않았다. 수정해야할 부분을 모두 수정하고 서비스에 투입하자 갑자기 예외로그가 쭉쭉 올라오기 시작했다. 기존 JDK6에서는 발생하지않았던 문제이며, 발생한 예외는 ConcurrentModificationException 이었다. 예외로그가 쭉쭉 쌓이다보니 일단 서비스에서 제외하고 원인을 찾기시작했다. 보통 ConcurrentModificationException은 Iterator가 반복하고있을때 내부에서 remove등으로 Colle..
아직 Java9을 사용해본적은 없지만 Java9이 나오고 초창기에 롬복을 사용할 수 없다는 이슈를 들은적이 있다. Java9을 할일이 없어서 크게 신경은 쓰지않고 있었는데 얼마전 롬복의 버전업을 할일이 있었다. 기존사용버전은 1.16.14였고, 1.16.20까지 나와있길래 최신버전으로 업데이트를 했다. 그리고나서 테스트를 실행하니 여기저기서 테스트가 깨지는 문제가 발생했다. 주로(전부다) jackson을 이용해 json을 deserialize 하는 코드에서 테스트를 실패했는데 롬복이 만들어주는 생성자가 기존코드와는 다르게 변경됐다. @AllArgsConstructor public class Person { private int age = 30; private String name; } 이 코드를 롬복 버..
자바로 개발하는 프로젝트라면 Lombok을 많이 사용할것이다. 이런저런 규약에 따라 거의 필수적으로 만들어줘야하는 코드를 자동생성해주는 고마운 라이브러리이다. 객체 생성 패턴중 한가지인 빌더 클래스도 롬복의 @Builder 애노테이션을 이용하면 쉽게 만들 수 있다. @Builder public class Person { private int age; private String name; } 빌더 패턴에 대한 설명은 여기서 하지 않겠다(이전 포스팅). 롬복을 이용해 빌더 클래스를 만들면 이런식으로 Person 객체를 생성할 수 있다. Person person = Person.builder() .age(30) .name("LichKing") .build(); 이번에 포스팅할 내용은 이부분에 관한것이다. Pe..
파이썬 의존성들을 설치할때 pip 패키지 관리자를 사용하게된다. 이때 python2.x, python3.x 버전이 모두 있을경우 pip로 설치시 python2 버전에 해당하는 의존성들을 받게된다. 애초에 왜 python 버전을 2개 다 갖고있나생각할 수도있지만 Mac의 경우 기본적으로 python2.x 를 내장하고있기때문에 나중에 3를 설치한다면 이런 문제에 맞딱뜨릴수밖에 없다.(python2 지워버릴까 고민중..) 이럴땐 pip3 명령어로 python3 용 의존성을 받을 수 있다. 예) pip3 install scrapy
요즘 '파이썬으로 웹크롤러 만들기' 라는 책을 보고있다. 파이썬은 생전 처음쓰는 언어라 간단한것도 꽤나 시간을 소모하며 진행하고있는데, https 사이트를 파싱하는 예제가있다. 정확히말하면 예제에는 http로 나와있는데 그 사이에 이 사이트가 https를 적용한건지.. 지금은 https다. 별 생각없이 https 경로를 적어주면 '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed' 이런 메세지와 함께 정상적으로 작동하지않는다. 이럴땐 아래처럼 의존성을 추가해주면 된다. import ssl context = ssl._create_unverified_context() 뭐 어차피 별거없는 풀 예제코드는 이렇다. from urllib.request impo..
현재 프로젝트 로그라이브러리로 log4j2를 사용하고있다. 그러다가 사용하게된 라이브러리가 있는데 이 라이브러리는 log4j 를 사용하고있었다. 의존성 전이에 따라 큰 문제없이 프로젝트 구동은 되지만 워닝 로그가 뜨게된다. log4j:WARN No appenders could be found for logger (org.apache.activemq.util.ThreadPoolUtils). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 이런로그가 뜨게되는데 무시해도 돌아가는덴 지장없지만... 없애보자. 1..
kotlin 에서 jackson 사용시 kotlin/reflect/KotlinReflectionInternalErrorjava.lang.NoClassDefFoundError: kotlin/reflect/KotlinReflectionInternalError 이런 에러를 내뿜는 경우가 있다. 나같은경우 코틀린은 1.2.10 을 사용하고있고, 스프링부트를 이용해서 작업하고있었는데 스프링부트에서 포함하고있는 jackson 이 2.8.10 이라서 코틀린 jackson 모듈도 동일 버전으로 추가했었다. compile("com.fasterxml.jackson.module:jackson-module-kotlin:2.8.10") 그리고 저 에러를 만난건데 코틀린 jackson 버전을 2.9 이상으로 올려주면 해결된다.j..
- Total
- Today
- Yesterday
- db
- servlet
- clean code
- TEST
- JPA
- http
- Git
- JavaScript Core
- EffectiveJava
- java8
- mariadb
- DesignPattern
- Design Pattern
- code
- java
- Jackson
- spring cloud
- programming
- frontcode
- 정규표현식
- backend개발환경
- Kotlin
- javascript
- toby
- OOP
- Spring
- MySQL
- frontend개발환경
- generics
- go-core
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |