0

次のコマンドを使用して、JavaWebサービスクライアントを正常にコンパイルできます。

javac 
     -classpath lib\spring-ws-2.0.0-M2-all.jar;lib\xml-apis.jar;lib\j2ee.jar;lib\saaj.jar;lib\saaj-impl.jar 
     WebServiceClient.java

実際に実行すると(java WebServiceClient)、次のエラーが発生します。

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/ws/client/core/WebServiceTemplate
        at WebServiceClient.<init>(WebServiceClient.java:14)
        at WebServiceClient.main(WebServiceClient.java:37)
Caused by: java.lang.ClassNotFoundException: org.springframework.ws.client.core.
WebServiceTemplate
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        ... 2 more

WebServiceClient.javaのコードは次のとおりです。

import java.io.StringReader;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.springframework.ws.WebServiceMessageFactory;
import org.springframework.ws.client.core.WebServiceTemplate;
import org.springframework.ws.transport.WebServiceMessageSender;

public class WebServiceClient {

    private static final String MESSAGE =
        "<message xmlns=\"http://tempuri.org\">Hello Web Service World</message>";

    private final WebServiceTemplate webServiceTemplate = new WebServiceTemplate();

    public void setDefaultUri(String defaultUri) {
        webServiceTemplate.setDefaultUri(defaultUri);
    }

    // send to the configured default URI
    public void simpleSendAndReceive() {
        StreamSource source = new StreamSource(new StringReader(MESSAGE));
        StreamResult result = new StreamResult(System.out);
        webServiceTemplate.sendSourceAndReceiveToResult(source, result);
    }

    // send to an explicit URI
    public void customSendAndReceive() {
        StreamSource source = new StreamSource(new StringReader(MESSAGE));
        StreamResult result = new StreamResult(System.out);
        webServiceTemplate.sendSourceAndReceiveToResult("http://wsdl",
            source, result);
    }

    public static void main(String[] args) throws Exception {
        WebServiceClient ws = new WebServiceClient();
        ws.setDefaultUri("http://wsdl");
        ws.simpleSendAndReceive();
    }
}

どんな助けでも大歓迎です。

4

3 に答える 3

0

試す

java -classpath lib\spring-ws-2.0.0-M2-all.jar;lib\xml-apis.jar;lib\j2ee.jar;lib\saaj.jar;lib\saaj-impl.jar WebServiceClient

あなたのフォルダ構造は次のようになっていると思います。

\WebServiceClient.java
\WebServiceClient.class
\lib\spring-ws-2.0.0-M2-all.jar
\lib\xml-apis.jar
\lib\j2ee.jar
\lib\saaj.jar
\lib\saaj-impl.jar
于 2010-06-23T13:07:37.290 に答える
0

org.springframework.ws.client.core.WebServiceTemplatespring-ws-core.jar にあります。アプリケーションを実行しようとしている Application Server にアプリケーションがデプロイされたときに WAR/EAR に含まれているかどうか、またはサーバーの lib の一部として含まれているかどうかを確認しましたか? コンパイルが成功しても、アプリケーションの実行に必要なすべてのクラスが実行時に存在するわけではありません。

于 2011-05-12T19:38:10.983 に答える
0

そのクラスパスをjavac呼び出しに渡したとき、それらの JAR でのみ定義されたファイルをクラスが参照したため、それが必要でした。

同じことが実行時にも当てはまります。コンパイルされた Java バイトコードは、クラスをロードして Spring 機能を使用するために、これらの JAR を「参照」できる必要があります。java WebServiceClientしたがって、単に呼び出して、それが機能することを期待することはできません。

代わりに、pakore の回答が示すコマンドを呼び出す必要があります。これは機能するはずです。疑わしい場合は、コンパイルが正常に完了した後、上向き矢印を押して最後のコマンドを再バッファリングし、cfromjavacを削除.javaし、最後のファイル名から from を削除します。(シェルがこれをサポートしていない場合は、メモ帳などで前の行をコピーして貼り付けてください)。

于 2010-06-23T13:31:19.253 に答える