0

我想知道是否有人可以帮忙,因为我正在努力编译 maxmind.geoip.LookupService.java

我已经下载了 geoip-api-1.2.10.jar 以包含在 WEB-INF\lib 中,并且我在我的类路径中引用了它,但它只是无法编译。

我已经成功编译了以下内容,所以我有点不知所措:

com.maxmind.geoip.Country
com.maxmind.geoip.DatabaseInfo
com.maxmind.geoip.Location
com.maxmind.geoip.Region
com.maxmind.geoip.timeZone

似乎无法为 com.maxmind.geoip 找到一整套已编译的 java 类,任何帮助将不胜感激:-)

4

3 回答 3

1

我通过从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");
    }
    }
}

希望这对其他人有用。

于 2013-09-03T15:35:38.097 回答
0

根据MaxMind 开发站点的说法,该 API 可在Maven 中央存储库中获得。除非你下载了源包,否则你不需要编译任何东西。

于 2013-09-03T13:01:45.230 回答
0

您必须从此链接下载一个名为geoIP-api的 Jar 文件到 maven 存储库,如果您还没有从 go 这个geoIP2下载其他 Jar 文件,也不要忘记从geoIP.dat下载.DAT文件。然后将文件从项目属性添加到您的项目类路径,然后最后在netbeans中添加 Jar

现在使用此代码:

    public String IpGeoLocation(String IP) {
        try {
            String dbfile = "C:\\Users\\User Name \\Documents\\NetBeansProjects\\IP Tools\\resources/GeoIP.dat";
            String location = "";
            LookupService cl = new LookupService(dbfile, LookupService.GEOIP_MEMORY_CACHE);
            location = cl.getCountry(IP).getName() + " " + cl.getCountry(IP).getCode();
            cl.close();
            return location;
        } catch (Exception e) {
                           return "Error";
        }
    }

我只能找到国家和国家代码!

于 2017-02-08T12:51:37.107 回答