Java Geoip2 : Getting "java.lang.reflect.InvocationTargetException" Exception

标签 java jackson maxmind geoip2

我正在 Java 中使用 GeoIP2 将 IP 地址转换为 maxmind 数据库中的位置信息。

我的java代码:

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

当我构建阅读器时,我收到 java.lang.reflect.InspirationTargetException 异常。我认为 Jackson 版本(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>   

最佳答案

使用2.3.0版本的geoip2。

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

2.8.1 使用较新版本的 Jackson,导致与您的 Jackson 依赖项发生冲突。

关于Java Geoip2 : Getting "java.lang.reflect.InvocationTargetException" Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42553167/

相关文章:

java - 字谜哈希函数

java - 为什么 StringBuffer/StringBuilder 不重写 equals 或 hashCode?

java - Altbeacon - 扫描数组中的多个 UUID

java - 使用 Jackson 读取 Json 文件以获得以下 Json 结构并获取对象

java - 线程 "main"java.lang.NullPointerException [maxMind] 中的异常

java - 连接字符串中的条件运算符

java - 如何创建一个通用的 JsonDeserializer

javascript - 为什么移动设备和台式机/笔记本电脑的 IP 地址不同?

perl - 具有私有(private) IP 的自定义 MaxmindDB (geoip2)

java - ObjectMapper 反序列化所需字段