2016-05-26 8 views
0

Я следую этому руководству для создания веб-службы в веб-проекте Java: https://angelozerr.wordpress.com/2011/08/24/jaxwscxf_step2/. Когда я на самом деле генерации его с Apache CXF, он делает все файлы и пакеты (делает два JAXWS пакеты по какой-то причине), но я вижу эту ошибку в консоли:NullPointerException при генерации webservice с Apache CXF в Eclipse

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

Что я делаю неправильно? Любая помощь будет оценена!

EDIT: 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

+0

Просьба указать код для класса Java2ws, чтобы лучше понять это. – Jeet

+0

Я просто добавил его к OP. –

+0

Хорошо, я анализирую полную программу сейчас, так как код выглядит нормально для меня. – Jeet

ответ

2

Глядя на след исключения,

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 Runtime, попробуйте запустить его с JDK, а не JRE.

Если вы используете java2ws из командной строки, убедитесь, что переменная окружения JAVA_HOME указывает на недавно установленную папку JDK, если вы используете плагин CXF eclipse, вам также может потребоваться перейти на Apache CXF 2.7.18, потому что плагин CXF eclipse не поддерживает версии 3.x.

+0

Как настроить это на Eclipse? Я пошел в среду выполнения, но я могу выбрать только JRE. –

+0

Сначала загрузите и установите JDK, затем добавьте свою папку JDK в установленные JRE и выберите по умолчанию. – vzamanillo

+0

Я согласен, что вы должны попробовать его с JDK, а не JRE – Jeet