Java Geoip2:获取 "java.lang.reflect.InvocationTargetException" 异常
Java Geoip2: Getting "java.lang.reflect.InvocationTargetException" Exception
我在 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);
}
我在构建 reader 时收到 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>
使用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 将 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);
}
我在构建 reader 时收到 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>
使用2.3.0版本的geoip2。
<dependency>
<groupId>com.maxmind.geoip2</groupId>
<artifactId>geoip2</artifactId>
<version>2.3.0</version>
</dependency>
2.8.1 使用较新版本的 Jackson,导致与您的 Jackson 依赖项发生冲突。