2017-03-02 5 views
0

Ich verwende GeoIP2 in Java, um IP-Adresse zu Standortinformationen von Maxmind-Datenbank zu konvertieren.Java Geoip2: Getting "java.lang.reflect.InvocationTargetException" Ausnahme

Mein Java-Code:

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); 
} 

Ich erhalte java.lang.reflect.InvocationTargetException Ausnahme, wenn ich meine Leser bauen. Ich denke, Jacksons Versionen (2.5.3) sind mit GeoIP2 nicht kompatibel. Aber ich kann nicht reparieren.

Meine dependecy Versionen sind:

<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> 

Antwort

1

Verwenden 2.3.0 Version von geoip2.

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

2.8.1 verwendet neuere Version von Jackson, Konflikt mit Ihrem Jackson Abhängigkeit verursachen.

Verwandte Themen