我通过从http://dev.maxmind.com/geoip/legacy/downloadable/下载最新的 java 文件来解决这个问题,解压文件夹,然后打开命令提示符并输入以下内容:
cd source/com/maxmind/geoip/
javac *.java
我正在使用 jdk1.6.0_34 并且所有类都编译没有错误。
我将 com.maxmind.geoip 文件夹复制到 \WEB-INF\classes 并下载 geoip-api-1.2.10.jar 并将其放在 WEB-INF\lib 文件夹中。
最后,我从http://dev.maxmind.com/geoip/legacy/geolite/下载 GeoIP.dat并将其放在 webapps 下名为 GeoIP 的新文件夹中,以便我所有的应用程序都可以使用它。
以下代码用于从用户 IP 地址获取国家代码:
import com.maxmind.geoip.*;
import java.io.IOException;
class CountryLookupTest {
public static void main(String[] args) {
try {
String sep = System.getProperty("file.separator");
String dir = "C:/Program Files/Apache Software Foundation/Tomcat 7.0/GeoIP";
String dbfile = dir + sep + "GeoIP.dat";
LookupService cl = new LookupService(dbfile,LookupService.GEOIP_MEMORY_CACHE);
System.out.println(cl.getCountry("151.38.39.114").getCode());
System.out.println(cl.getCountry("151.38.39.114").getName());
System.out.println(cl.getCountry("12.25.205.51").getName());
System.out.println(cl.getCountry("64.81.104.131").getName());
System.out.println(cl.getCountry("200.21.225.82").getName());
cl.close();
}
catch (IOException e) {
System.out.println("IO Exception");
}
}
}
希望这对其他人有用。