2

我想创建一个动态客户端来调用我创建的 Web 服务。我尝试JaxWsDynamicClientFactory按照其官方网站中的说明使用,但没有得到任何输出。相反,我得到NullPointerException.

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client c = dcf.createClient("http://localhost:8080/service/SearchingSEI?wsdl");

第二行是抛出异常。

堆栈跟踪:

Exception in thread "main" java.lang.NullPointerException
    at org.apache.cxf.common.util.Compiler.useJava6Compiler(Compiler.java:189)
    at org.apache.cxf.common.util.Compiler.compileFiles(Compiler.java:143)
    at org.apache.cxf.common.util.Compiler.compileFiles(Compiler.java:138)
    at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.compileJavaSrc(DynamicClientFactory.java:599)
    at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:367)
    at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:235)
    at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:228)
    at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:183)
    at com.client.dynamic.DynamicClientFactory.main(DynamicClientFactory.java:24)

我不知道问题是什么。任何建议都会有很大帮助。谢谢。

4

2 回答 2

3

您需要使用 JDK 而不是 JRE 运行代码。NPE 发生在 CXF 的以下Compiler课程中

   JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
   StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);

compiler如果您在 JRE 中运行,则为 null。

于 2013-03-28T10:42:10.123 回答
1

那是因为 CXF 使用 JRE7 而不是 JDK7。在 Windows 中安装 JDK 时,默认情况下也会安装 JRE,并且所有首选项都指向 JRE。

  1. 检查你的路径。确保它指向 ${JDK_LOCATION}/bin
  2. 检查您的 JAVA_HOME。确保它指向 ${JDK_LOCATION}
  3. 转到控制面板/java。添加JDK就可以了。
  4. 您还需要在 Window->Preference->Java->Installed JREs 中检查 eclipse
于 2013-12-29T22:02:03.470 回答