2016-05-27 3 views
1

私はオンラインで見つかったものと非常によく似たコードを使用していますが、「GeoIPServiceのインスタンスを生成できません」というエラーが表示されます。別の質問hereでも同じ問題が見つかりましたが、決して答えられませんでした。GeoIPServiceをインスタンス化する問題

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()); 
    } 
}  

UPDATE:同じクラスを使用して、誰のために、問題がGeoIPServiceLocator代わりのGeoIPServiceをインスタンス化することによって解決しました。

+1

あなたは 'GeoIPService'がインタフェースではありませんか?もしそうであれば、その実装をインスタンス化する必要があります。 –

+0

GeoIPServiceを実装したクラスを作成し、それをCountryFinderでインスタンス化する必要がありますか? – tyrannis

+0

'GeoIPService'の中でメソッドを定義したい場合は、yesですが、すでにインターフェイスを使用しているインポートされたクラスを使いたいと思っています。私はあなたがそれらのインポートをどこに持っているのかわかりませんが、それらのドキュメントがあれば、それをチェックしてそのインターフェースを実装しているクラスを確認することをお勧めします。 –

答えて

1

GeoIPServiceはインターフェイスであり、クラスではないため、インターフェイス自体ではなく、インターフェイスの実装をインスタンス化する必要があります。

誤: GeoIPService service = new GeoIPService();

正しい: GeoIPService service = new ClassThatImplementsGeoIPService();

関連する問題