Java Geoip2:获取"java.lang.reflect.InvocationTargetException"异常



我正在使用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.InvocationTargetException例外。我认为杰克逊版本(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>   

使用geoip2的2.3.0版本。

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

2.8.1使用杰克逊的较新版本,导致与杰克逊依赖性冲突。

相关内容

  • 没有找到相关文章

最新更新