我使用的代码与我在网上找到的代码非常相似,但是出现错误“无法实例化GeoIPService类型”。我在另一个问题here中发现了相同的问题,但从未得到回答。

import net.webservicex.www.GeoIP;
import net.webservicex.www.GeoIPService;
import net.webservicex.www.GeoIPServiceSoap;;

public class CountryFinder
{
    public static void main(String[] args)
    {
        GeoIPService service = new GeoIPService();  // "Cannot instaniate the type GeoServiceIP"
        GeoIPServiceSoap port = service.getGeoIPServiceSoap();
        System.out.print(port.getGeoIP("1.1.1.1").getCountryName());
    }
}


更新:对于使用相同类的任何人,都可以通过实例化GeoIPServiceLocator而不是GeoIPService来解决此问题。

最佳答案

GeoIPService是一个接口,而不是一个类,因此您必须实例化它的实现,而不是接口本身。

不正确:
GeoIPService service = new GeoIPService();

正确:
GeoIPService service = new ClassThatImplementsGeoIPService();

10-08 06:48