2017-03-02 6 views
0

Java에서 GeoIP2를 사용하여 IP 주소를 maxmind 데이터베이스의 위치 정보로 변환하고 있습니다.Java Geoip2 : "java.lang.reflect.InvocationTargetException"예외 발생

내 자바 코드 : 내 독자를 빌드 할 때 내가 java.lang.reflect.InvocationTargetException 예외를 얻고있다

try { 
    ClassLoader classLoader = getClass().getClassLoader(); 
    File database = new File(classLoader.getResource("GeoLite2-City.mmdb").getFile()); 

    DatabaseReader reader = new DatabaseReader.Builder(database).build(); 
    InetAddress ipAddress = InetAddress.getByName(ip); 
    CityResponse response = reader.city(ipAddress); 

    City city = response.getCity(); 
    ... 

} catch (UnknownHostException e) { 
    logger.logError(getClass(), "getGeoIp", " transactionId:" + transactionId + " > " + e.getMessage(), null); 
} catch (IOException e) { 
    logger.logError(getClass(), "getGeoIp", " transactionId:" + transactionId + " > " + e.getMessage(), null); 
} catch (GeoIp2Exception e) { 
    logger.logError(getClass(), "getGeoIp", " transactionId:" + transactionId + " > " + e.getMessage(), null); 
} 

. 잭슨 버전 (2.5.3)은 geoip2와 호환되지 않는다고 생각합니다. 그러나 나는 고칠 수 없다.

내 실행 종속 버전은 다음과 같습니다

<dependency> 
    <groupId>com.maxmind.geoip2</groupId> 
    <artifactId>geoip2</artifactId> 
    <version>2.8.1</version> 
</dependency> 

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.9.13</version> 
</dependency> 

답변

1

사용 geoip2의 2.3.0 버전.

<dependency> 
    <groupId>com.maxmind.geoip2</groupId> 
    <artifactId>geoip2</artifactId> 
    <version>2.3.0</version> 
</dependency> 

2.8.1은 새로운 버전의 Jackson을 사용하여 Jackson 종속성과 충돌합니다.