2017-01-31 13 views
0

これを修正する方法を知っている人はいますか? Webサービスを使用するクライアントを作成しました。クライアントコードは次のとおりです。java.lang.NoClassDefFoundError:org/apache/cxf/service/invoker/Invoker

Exception in thread "main" java.util.ServiceConfigurationError: javax.xml.ws.spi.Provider: Provider org.apache.cxf.jaxws.spi.ProviderImpl could not be instantiated 
    at java.util.ServiceLoader.fail(Unknown Source) 
    at java.util.ServiceLoader.access$100(Unknown Source) 
    at java.util.ServiceLoader$LazyIterator.nextService(Unknown Source) 
    at java.util.ServiceLoader$LazyIterator.next(Unknown Source) 
    at java.util.ServiceLoader$1.next(Unknown Source) 
    at javax.xml.ws.spi.Provider.getProviderUsingServiceLoader(Unknown Source) 
    at javax.xml.ws.spi.Provider.provider(Unknown Source) 
    at javax.xml.ws.Service.<init>(Unknown Source) 
    at webservice.BoletinOficialService.<init>(BoletinOficialService.java:46) 
    at cliente.Cliente.main(Cliente.java:35) 
Caused by: java.lang.NoClassDefFoundError: org/apache/cxf/service/invoker/Invoker 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) 
    at java.lang.Class.getConstructor0(Unknown Source) 
    at java.lang.Class.newInstance(Unknown Source) 
    ... 8 more 
Caused by: java.lang.ClassNotFoundException: org.apache.cxf.service.invoker.Invoker 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 12 more 

このクラスと他の人がWSDLからwsimportのを介して作成された:プログラムを実行し、ANCにも「サービス」を作成することはできません、次のエラーを取得するとき

package cliente; 

import java.util.List; 

import handler.HeaderHandler; 
import webservice.BoletinOficial; 
import webservice.BoletinOficialService; 
import petanuncio.PeticionAnuncio; 
import respanuncio.RespuestaAnuncio; 

import org.apache.cxf.jaxws.binding.DefaultBindingImpl; 

import javax.xml.ws.BindingProvider; 
import javax.xml.ws.handler.Handler; 
import java.util.ArrayList; 


public class Cliente { 

/** 
* Main 
* @param args 
*/ 
@SuppressWarnings("rawtypes") 
public static void main(String[] args) { 

    String endpointURL = ""; 
    try { 


     BoletinOficialService service = new BoletinOficialService(); 

     BoletinOficial proxy = service.getBoletinOficialSoap11(); 


//rest of code 

    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
} 

問題がありますファイル、althoug私はこれが私が得るエラーに関連しているとは思わない。 org.apache.cxf.jaxws.spi.ProviderImplクラスはcxf-rt-frontend-jaxws-3.1.1.jarファイルにあります。このプロジェクトにはreisceとしてwhisが追加されています。

This is the project structure

These are the libraries

私が行方不明です何がありますか?前もって感謝します。

答えて

0

は、あなたがhttps://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws/3.1.1

ベターで見つけコンパイルの依存関係を追加しますMavenのに切り替えます。

+0

さて、私はMavenに切り替えましたが、私が説明したエラーは消えました。ありがとうございました。 – bentakayze

+0

どのようなエラーがありますか? MavenでCXFを設定する方法については、http://cxf.apache.org/docs/using-cxf-with-maven.htmlを参照してください。cxf-rt-frontend-jaxwsの横には、cxf -rt-transports-http依存関係、およびオプションでcxf-rt-transport-http-jetty依存関係を示します。 cxf-rt-transport-http-jetty依存関係を使用しない場合は、CXFServletを使用してWebサービスを構成する必要があります。 – toongeorges

+0

CXFにはhttp://cxf.apache.org/docs/sample-projects.htmlで説明されているサンプルプロジェクトがあります。 https://cxf.apache.org/source-repository.htmlでCXFプロジェクトのソースコードを入手する方法を確認してください。サンプルプロジェクトは、src/main/release/samplesというフォルダの下にあります。 – toongeorges

0

Invokerは、CXF APIの一部です。 cxf-apiが見つからないようです。エルス

<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-api</artifactId> 
    <version>YOUR_VERSION</version> 
</dependency> 

は、あなたのクラスパスにjarファイルを追加します。あなたはMavenを使用する場合は

は、依存関係を追加します。

+0

明らかに、彼はMavenを使用していません。おそらく彼はすべきだ。 Mavenが解決したことの1つは、推移的な依存関係を管理することです。これらの推移的な依存関係を自分自身で管理する必要はありません。 – toongeorges

+0

私はMavenを使用していません。また、Properties/Java Build Path/Add Variableを介してjar(その他)をクラスパスに追加しました。フォルダを追加してすべてのjarファイルを追加し、[Order and Export]タブでチェックしました。変更を保存し、クリーンアップしてプロジェクトを再構築し、同じ結果でクライアントを実行します:エラー。 – bentakayze

+0

私はプロジェクトの種類をMavenに変更しようとしましたが、severaエラーが発生しましたので、最初に修正できるかどうか試してみたかったのです。 – bentakayze