2013-03-22 43 views
2

我想創建一個動態客戶端來調用我創建的Web服務。我嘗試使用JaxWsDynamicClientFactory正如其官方site中所述,但我沒有得到任何輸出。相反,我得到NullPointerException使用JaxWsDynamicClientFactory(Apache CXF)的動態客戶端

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) 

我不知道是什麼問題。任何建議將是一個很大的幫助。謝謝。

+0

? – artbristol 2013-03-27 12:52:18

+0

是的。 6更新27 – Sujan 2013-03-28 03:36:34

+0

@artbristol也試過7.但仍然沒有運氣。 – Sujan 2013-03-28 05:04:43

回答

3

您需要使用JDK而不是JRE來運行代碼。如果你在一個JRE中運行NPE在CXF的Compiler

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

compiler以下位發生的事情是零。

+0

你能更詳細一點嗎?我如何解決我的問題? – Sujan 2013-03-28 10:49:01

+0

你安裝了JDK嗎? – 2013-03-28 10:54:08

+0

當然。沒有它我怎麼能發展? – Sujan 2013-03-28 10:54:42

1

這是因爲CXF使用JRE7而不是JDK7。在Windows中安裝JDK時,默認情況下JRE也會安裝,並且所有首選項都指向JRE。

  1. 檢查您的PATH。確保它指向$ {JDK_LOCATION}/bin
  2. 檢查您的JAVA_HOME。確保它指向$ {JDK_LOCATION}
  3. 轉到控制面板/ java。在它上面添加JDK。
  4. 你也需要你使用的是舊版本的Java在窗口 - >優先 - > Java的>檢查安裝Eclipse的JRE