java - 在 Eclipse 中使用 Apache CXF 生成 Web 服务时出现 NullPointerException

标签 java eclipse apache web-services cxf

我正在按照本教程在 Java Web 项目中创建 Web 服务:https://angelozerr.wordpress.com/2011/08/24/jaxwscxf_step2/ 。当我开始使用 Apache CXF 实际生成它时,它会生成所有文件和包(由于某种原因生成两个 jaxws 包),但我在控制台中看到此错误:

java2ws -cp C:\Users\mo\Documents\Workspace\NpcWS\build\classes -s C:\Users\mo\Documents\Workspace\NpcWS\.cxftmp/src -d C:\Users\mo\Documents\Workspace\NpcWS\.cxftmp/wsdl -classdir C:\Users\mo\Documents\Workspace\NpcWS\build\classes -o helloserviceimpl.wsdl -createxsdimports -verbose -frontend jaxws -databinding jaxb -wsdl -wrapperbean org.cloudlet.ws.HelloServiceImpl
java2ws - Apache CXF 3.1.6

May 26, 2016 9:18:55 AM org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
INFO: Creating Service {http://ws.clodulet.org/}HelloServiceImplService from class org.clodulet.ws.HelloServiceImpl
java.lang.NullPointerException
    at org.apache.cxf.common.util.Compiler.useJava6Compiler(Compiler.java:187)
    at org.apache.cxf.common.util.Compiler.compileFiles(Compiler.java:141)
    at org.apache.cxf.tools.java2wsdl.generator.wsdl11.BeanGenerator.generateAndCompile(BeanGenerator.java:91)
    at org.apache.cxf.tools.java2wsdl.generator.wsdl11.BeanGenerator.generate(BeanGenerator.java:58)
    at org.apache.cxf.tools.java2wsdl.generator.wsdl11.BeanGenerator.generate(BeanGenerator.java:35)
    at org.apache.cxf.tools.java2wsdl.processor.JavaToWSDLProcessor.generate(JavaToWSDLProcessor.java:156)
    at org.apache.cxf.tools.java2wsdl.processor.JavaToWSDLProcessor.process(JavaToWSDLProcessor.java:118)
    at org.apache.cxf.tools.java2ws.JavaToWSContainer.processWSDL(JavaToWSContainer.java:110)
    at org.apache.cxf.tools.java2ws.JavaToWSContainer.execute(JavaToWSContainer.java:75)
    at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103)
    at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:58)
    at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:40)
    at org.apache.cxf.tools.java2ws.JavaToWS.run(JavaToWS.java:77)
    at org.apache.cxf.tools.java2ws.JavaToWS.main(JavaToWS.java:45)

我正在读这个:NullPointerException while generating web service with Apache CXF ,但是我的执行环境已经是1.8了。

enter image description here

我做错了什么?任何帮助将不胜感激!

编辑:Java 类

package org.clodulet.ws;

import javax.jws.WebService;

@WebService(targetNamespace = "http://ws.clodulet.org/", portName = "HelloServiceImplPort", serviceName = "HelloServiceImplService")
public class HelloServiceImpl 
{
    public String getVersion() {
        return "1.0";
    }

    public String hello(String str) {
        return "Hello " + str;
    }
}

这些是它创建的文件:(然后出现错误)

enter image description here

最佳答案

查看异常跟踪,

java.lang.NullPointerException
    at org.apache.cxf.common.util.Compiler.useJava6Compiler(Compiler.java:187)

以及 Compiler 的一部分类

180        Object compiler = Class.forName("javax.tools.ToolProvider")
181            .getMethod("getSystemJavaCompiler").invoke(null);

看来您需要 Java 编译器,而不是 Java 运行时,请尝试使用 JDK 而不是 JRE 运行它。

如果您从命令行运行 java2ws,请确保您的 JAVA_HOME 环境变量指向最近安装的 JDK 文件夹,如果您使用 CXF eclipse 插件,您可能还需要降级到 Apache CXF 2.7.18,因为CXF eclipse插件不支持3.x版本。

关于java - 在 Eclipse 中使用 Apache CXF 生成 Web 服务时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37462334/

相关文章:

Java 验证框架

java - 无法连接到服务器上的远程数据库

android - 无法编译,无法执行dex,无法合并,非巨型指令

c# - 极其奇怪的 ClickOnce Web 部署行为(缓存)

java - String[] 数组上的 .split 和 .indexOf

java - 为什么不能在 jmock 中模拟 Pattern.class ?

java - 了解 Java 泛型的类型安全异常

python - 如何在Python中导入/添加名为web的模块

django - ubuntu django 和 apache,找不到该站点

java - 如何更正 JSP 中的 servlet 映射?