2012-03-21 32 views
3

JavaクライアントからWebサービスを使用しようとしています。Webサービスクライアントの作成時にクラスが見つかりません。

私はwsimportのを使用してクラスを生成:それはこのライン当たると

private String CreateSalesforceIssue() { 

    IssueService service = new IssueService(); 
    IIssueService binding = service.getBasicHttpBindingIIssueService(); 

    String issueID = binding.createIssue(type, description, steps, 
                expected, workaround, storage, 
                docType, actions, tools, external, 
                repeatability, workaroundType, severity, 
                pmSeverity, products, extensions, versions, 
                os, status, project, resolution, fixversions); 

    return issueID; 
} 

wsimport -keep -verbose http://localhost:5382/Service1.svc?wsdl 

コードは次のようになります十分コードに足を踏み入れる

IssueService service = new IssueService(); 

をし、 javax.xml.ws.spi.Providerに到達し、そこでは失敗します。

if (!(provider instanceof Provider)) { 

のClassNotFoundExceptionと::プロバイダcom.sun.xml.ws.spi.ProviderImpl

私は何かが欠けていますように私は感じ

このライン上の

public static Provider provider() { 
    try { 
     Object provider = 
       FactoryFinder.find(JAXWSPROVIDER_PROPERTY, 
       DEFAULT_JAXWSPROVIDER); 
     if (!(provider instanceof Provider)) { 
      Class pClass = Provider.class; 
      String classnameAsResource = pClass.getName().replace('.', '/') + ".class"; 
      ClassLoader loader = pClass.getClassLoader(); 
      if(loader == null) { 
       loader = ClassLoader.getSystemClassLoader(); 
      } 
      URL targetTypeURL = loader.getResource(classnameAsResource); 
      throw new LinkageError("ClassCastException: attempting to cast" + 
        provider.getClass().getClassLoader().getResource(classnameAsResource) + 
        "to" + targetTypeURL.toString()); 
     } 
     return (Provider) provider; 
    } catch (WebServiceException ex) { 
     throw ex; 
    } catch (Exception ex) { 
     throw new WebServiceException("Unable to createEndpointReference Provider", ex); 
    } 
} 

、残念ながら私は何がわかりません...プロバイダをどこにでも初期化する必要がありますか?

+0

? – jtahlborn

+0

私は私のpom.xmlでJAXWS-RTの依存を含めたJava 6を使用しています残念ながら私はクラスパスに他に何があるのか​​わからない – declyne

+0

jaxws-rtは必要ありません、それはjreに含まれています – jtahlborn

答えて

1

classpathProviderクラスを追加する必要があります。 IDEを使用している場合は、ライブラリを右クリックして「add Jar file」(またはそのようなもの)を選択することで簡単にライブラリを追加できます。あなたは、次のコマンドを使用terminal経由してアプリケーションをコンパイルし、実行しようとした場合でも:

javac -d [bin folder] -cp [jar files] [java source files] 
java -classpath [jar files] [Main class] 

あなたはMS WindowsでLinuxおよびMac OSで:;を使用してjarファイルを分割する必要があります。あなたはこれがWebサービスだと言ったので、私はあなたがIDEを使用していると思います。最初の解決策があなたを助けるかもしれません。

P.S.このjarファイルをクラスパスに追加して、このexceptionが再度発生した場合は、このjarファイルをWebサーバー/コンテナライブラリディレクトリに追加してください。 tomcatで(例えばlibフォルダ。いかなる、余分なjarファイルがクラスパス上にある場合は、使用して、何しているのjavaのどの版ã

+0

ありがとう、私はもはやそのプロジェクトに取り組んでいませんが、もし私がそれに戻ってきたらこれが助けになり、私はそれを答えとしてマークします。今のところ私はあなたにアップアップします。 – declyne

関連する問題