2013-11-14 29 views
1

最近我切換到Linux Mint 15,並且在Eclipse和ant中遇到問題。 這是一塊ant腳本的也就是造成麻煩:在Linux上從eclipse運行ant build時出錯。無法從螞蟻調用wsimport

   <exec osfamily="unix" executable="wsimport"> 
        <arg line="${prefix}/${jaxb.resources}/${[email protected]{i}} -s ${prefix}/${jaxb.src} -p ${[email protected]{i}} -wsdllocation ${[email protected]{i}} -b ${prefix}/jaxb-bindings.xml -Xdebug -verbose -Xnocompile" /> 
       </exec> 

然而,在構建過程中,使用Eclipse中的螞蟻,我收到以下錯誤:

Execute failed: java.io.IOException: Cannot run program "wsimport": error=2, No such file or directory 

我明白這是由於Eclipse無法找到作爲JDK一部分的wsimport工具。但是,如果我在終端中運行這個ant腳本,一切都會正確傳遞。 我的.bashrc將PATH變量設置爲jdk/bin文件夾,並且可以通過終端訪問wsimport。 Eclipse使用的是我的機器上安裝的ant版本(不是嵌入式版本),而項目是使用JDK編譯器(不嵌入其中)編譯生成的。我使用Oracle的JDK 1.7.0_45 64位。

在此先感謝。

編輯:

我手動安裝我的JDK(未由安裝程序包)在/ usr/LIB/JVM/JDK。使用update-alternatives配置它,並在我的用戶的.bashrc中設置JAVA_HOME和PATH變量。就像我說的,螞蟻腳本從終端工作,但不是從Eclipse(在螞蟻窗口)可能eclipse不知道PATH變量.bashrc ...

+0

也許試試給出可執行文件的完整路徑。一個問題是,您可能必須重新啓動Eclipse才能啓動新的環境。 –

+0

謝謝你的回答,但是這個ant腳本必須是可移植的。每個具有正確的java PATH變量的機器都應該運行這個。但是,出於某種原因,Eclipse螞蟻似乎不能正確地選擇變量。我手動安裝了我的JDK,而不是通過軟件包安裝程序。也許它與此有關。 – JohnCoss

回答

2

(這是一個古老的問題,但也許這會幫助他人未來)。 您可以使用Ant任務運行wsgen和wsimport。我並不熟悉你的所有變量,所以我的例子只是做自己的事情。它需要的變量:

  • metro.home - web服務-的tools.jar
  • build.classpath的位置 - 的依賴JAR文件
  • build.classes類路徑 - 在@WebService類
  • 的類路徑
  • BASEDIR - 在你寫你的WSGEN和的wsimport的位置上的文件

這裏的例子。

<!-- setup Metro tooltime classpath --> 
<path id="tool.cp"> 
    <path refid="runtime.cp"/> 
    <pathelement location="${metro.home}/webservices-tools.jar"/> 
</path> 

<!-- 
    Setup Wsimport ant task. You would use this task in WSDL to Java case 
    to compile a WSDL and generate Java classes. 
--> 
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport"> 
    <classpath refid="tool.cp"/> 
</taskdef> 

<!-- 
    Setup Wsgen ant task. You would use this task in Java to WSDL case to 
    generate a WSDL or wrapper classes. 
--> 
<taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen"> 
    <classpath refid="tool.cp"/> 
    <classpath refid="build.classpath"/> 
</taskdef> 

<target name="wsimport"> 
    <wsgen sei="com.company.app.ws.Authorize" 
     classpath="${build.classes}" 
     sourcedestdir="${basedir}/wsgen/src" 
     destdir="${basedir}/wsgen/classes" 
     keep="true" verbose="true" genwsdl="true" resourcedestdir="wsgen"> 
     <classpath refid="build.classpath"/> 
    </wsgen> 
    <wsimport verbose="true" keep="true" 
     destdir="${basedir}/wsimport/classes" 
     sourcedestdir="${basedir}/wsimport/src" 
     wsdl="${basedir}/wsgen/AuthorizeService.wsdl" 
    /> 
</target> 

注:從啓動在RedHat運行詹金斯Ant腳本時,這也爲我工作。

注意:如果您嘗試在Eclipse中使用外部工具運行Ant,則可能會遇到問題,如果您選擇JRE例如外部工具配置中JRE的「jre7」;更好地配置和使用JDK,例如「jdk1.7.0_80」。另外,在「外部工具配置」中添加「tools.jar」作爲附加的Classpath條目。