2015-05-26 2 views
2

Я генерирую заглушки webservice с использованием CXF и WSDL2JAVA, все отлично работает на Eclipse, но когда я развернул войну Tomcat 7.0, работающую под Linux (OpenSuse).
Я получаю ошибку ниже в лог-файле catalina.out [Ява файлы не компилируется]:CXF NullPointerException (не удалось скомпилировать заглушки webservice на Tomcat 7)

Caused by: 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.common.ClassUtils.compile(ClassUtils.java:122) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:306) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:164) 
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:412) 


Eclipse, среда:

  • Eclipse, версия: Indigo
  • JDK версия: 1.7.0_79
  • Tomcat: 7
  • c Версия XF: 3.0.4

OpenSuse Окружающая среда:

  • JDK версии: 1.7.0_79
  • Tomcat: 7

код wsdl2java:

WSDLToJava wsdlToJava = new WSDLToJava(); 
     ToolContext context=new ToolContext(); 
     wsdlToJava.setArguments(new String[]{"-d",tempDir,"-p","demopack","-verbose","-compile",wsdlURL}); 
     wsdlToJava.run(context); 
+0

Вы делаете SOAP звонки из 'main' в настройке Eclipse? Это похоже на то, что JAR отсутствует в вашем развертывании Tomcat. –

+0

Я создаю заглушки клиента SOAP webservice с помощью WSDL2JAVA [с помощью опции -compile], java-файлы генерируются, но генерируют ошибку при компиляции. – theinvisible

+0

Эти заглушки генерируются динамически и сохраняются в каталоге temp и недоступны в файле WAR – theinvisible

ответ

1

wsdl2java нужен экземпляр компилятора для генерации и компиляции файлов классов-заглушек. Итак, я решил проблему, сбросив переменную точку PATH в каталог JDK/bin вместо JRE/bin.

Спасибо @Tim Biegeleisen за ваше драгоценное время.

1

Я имел такую ​​же проблему с компонентом Talend Open Studio tWebService

Exception in component tWebService_1 
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.common.util.Compiler.compileFiles(Compiler.java:136) 
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.compileJavaSrc(DynamicClientFactory.java:611) 

Проблема была решена путем добавления «/usr/java/jdk1.8.0_161/bin/:» в начало переменной среды PATH в Linux.

echo $PATH 
/usr/java/jdk1.8.0_161/bin/:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin 

P.S. При поиске решения я также удалил open-jdk и установил один из Oracle через пакет prm. Скорее всего, это решение будет работать и с open-jdk. Наиболее сложным для меня было определение правильного двоичного файла jdk java, так как я не очень хорошо разбираюсь в Linux.

P.P.S. То же самое верно и для Windows, Talend Open Studion имеет отдельный параметр - нужно установить его в JDK java.exe

Window -> Preferences -> Talend: Java Интерпретатор

C:\Program Files\Java\jdk1.8.0_161\bin\java.exe 
Смежные вопросы