2012-02-02 70 views
0

我正在嘗試爲其GUI使用SWT的程序製作跨平臺.jar。我偶然發現了thisthis,並試圖在我自己的程序中使用它。我對ant腳本並不是非常有經驗,而且這個程序在其構建路徑中有很多其他的.jars,因此我使用eclipse生成了一個ant構建腳本,我修改了它以包含swtjar任務。但是,當腳本運行並獲得swtjar任務時,它會失敗,並說The archive swtjar.jar doesn't exist。我也嘗試過提前創建一個合法的構建文件,並且也出現了這個錯誤。有什麼我失蹤?我在構建路徑中包含了swtjar.jar,並在腳本的頂部包含了taskdef。無法使用swtjar製作ant腳本

這裏的腳本:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project default="create_run_jar" name="Create Runnable Jar for Project kEllyIRClient"> 
<!--this file was created by Eclipse Runnable JAR Export Wizard--> 
<!--ANT 1.7 is required--> 

<taskdef name="swtjar" classname="org.swtjar.ant.SWTJarTask" 
         classpath="./libs/swtjar.jar"/> 

<target name="create_run_jar"> 

    <!--make the release directory if it doesn't exist--> 
    <mkdir dir="./release/"/> 

    <!--Create a temporary jar file with all the dependencies (i.e. the libs folder)--> 
    <jar jarfile="./release/externalLibsTemp.jar"> 
     <zipgroupfileset dir="./libs/"> 
     <exclude name="swt/*swt*.jar"/> 
     <exclude name="swtjar.jar"/> 
     <include name="**/*.jar"/> 
     </zipgroupfileset> 
    </jar> 

    <!--package with swt--> 
    <swtjar jarfile="./release/KEllyIRC.jar" targetmainclass="shared.Initializer" swtversion="3.7.1"> 
     <fileset dir="./bin"/> 
     <!--Add the dependencies jar to the jar, but exclude the meta-inf/manifest stuff 
     cause that screws stuff up.--> 
     <zipfileset excludes="META-INF/*.SF" src="./release/externalLibsTemp.jar" /> 
     <fileset dir="./libs/swt/" includes="swt-win32-3.7.1.jar"/> 
    </swtjar> 

    <!--Delete temporary file--> 
    <delete file="./release/externalLibsTemp.jar"/> 

</target> 

這是錯誤:

D:\My Dropbox\Java\kEllyIRClient\swtjar-buildV2.xml:24: The archive swtjar.jar doesn't exist 
+0

請粘貼您修改的構建腳本的代碼以包含swtjar – Ved 2012-02-02 05:31:55

+0

請粘貼當您嘗試運行此目標時獲得的輸出 – mchr 2012-02-03 15:14:46

+0

請在此錯誤之前發佈輸出行。例如,我自己的一個項目產生了以下幾行輸出:[swtjar] \ Users \ username \ Documents \ Workspaces \ Github \ InTrace \ org.intrace \ lib \ swtjar.jar [swtjar]構建jar:C:\ Users \ username \ Documents \ Workspaces \ Github \ InTrace \ org.intrace \ build \ jars \ i ntrace-ui.jar。 – mchr 2012-02-05 22:21:25

回答

1

我留下了評論,要求從運行這個Ant目標輸出。

與此同時,您正在錯誤地包含您的swt罐子並且名稱錯誤。您正在使用:

<zipfileset excludes="META-INF/*.SF" src="./libs/swtjar.jar"/> 
<zipfileset excludes="META-INF/*.SF" src="./libs/org.eclipse.swt.win32.win32.x86_3.7.1.v3738a.jar"/> 
  • 你並不需要包括swtjar - 目標會自動爲你做到這一點。但是,我懷疑這是不適合你的一步。
  • 您還需要以格式「swt- <平臺> <位度> - 。jar」命名您的swt罐子。所以在你的情況下,你需要將「org.eclipse.swt.win32.win32.x86_3.7.1.v3738a.jar」重命名爲「swt-win32-3.7.1.jar」。
  • 使用zipfileset

你改名爲SWT的jar應包括以下幾個方面應該不包括SWT罐子。

<!-- SWT Jars --> 
<fileset dir="./libs" includes="swt-win32-3.7.1.jar" /> 

大部分是已經涵蓋在swtjar網站:http://mchr3k.github.com/swtjar/

+0

啊,對於第二點來說,抱歉,這是我的錯誤(最初命名正確)。我試着排除swtjar.jar,並使用swt-win32 jar的fileset,但不幸的是我仍然得到相同的錯誤。奇怪的是,在工作的時候,我在之前的最後一行發生了意外錯字,並且腳本跑到了這個位置。 我已經使用現在的代碼更新了問題中的腳本,並附帶了錯誤消息。 – 2012-02-04 03:18:10

+0

我有同樣的錯誤:存檔swtjar.jar不存在。我跟着你的指南,但我總是以相同的錯誤結束。 – 2012-08-07 16:25:19

+0

你能發佈完整的build.xml文件嗎?你從哪個目錄運行ant?你在使用什麼操作系統? – mchr 2012-08-07 22:50:07

0

我知道這是一個非常古老的問題,但我發現我工作的解決方案,但它可能不會幫助大家。你看,SWTJar討厭空間。

我的意思是,你的目錄路徑不能有空格。否則SWTJar解析路徑錯了,如下圖所示(我的老罈子腳本輸出):

[swtjar] /Users/generaluse/Documents/javagame/eclipse/FlippyChat 20MSG/swt/swtjar.jar 
BUILD FAILED 
/Users/generaluse/Documents/javagame/eclipse/FlippyChat MSG/build.xml:42: The archive swtjar.jar doesn't exist 

通知[swtjar]後,這部分(由swtjar生成):

/FlippyChat 20MSG/ 

與所產生的BUILD FAILED螞蟻:

/FlippyChat MSG/ 

由於SWTJar添加了20,它看起來在錯誤的地方,並且找不到它的jar。

mchr,如果你正在閱讀本文,你能解決它嗎?

在此期間,我建議使用連字符( - )或下劃線(_)而不是空格。無論如何它都是編程標準。