2011-11-28 134 views
1

我想在zip文件的ant build.xml文件中包含jar文件(ant-contrib.jar)。 我該怎麼做,而不解壓zip文件。 我試圖使用jarURLConnect。螞蟻 - 從zip文件中導入jar

<property url="jar:file:/D:/testing.zip!/testing/ant-contrib.jar" /> 

但是,這給了我一個

java.lang.IllegalArgumentException異常:畸形爲\ uXXXX編碼。

如果將「ant-contrib.jar」替換爲「test.properties」文件,則不會出現錯誤。

任何人都可以請幫助..

回答

1

property標記是包括性,這將是一個屬性文件。 jar文件不是屬性文件。 property docs很清楚。

您需要unzip該文件才能將其添加到類路徑中,然後將其實際添加到類路徑中:請參閱path-like structures文檔。不過,這不僅僅是一個財產。

+0

謝謝..但我認爲會有一個更簡單的方法,而不像解壓縮屬性如何..代碼看起來更清潔 – simplysiby

+0

二手下面的代碼只解壓我需要幷包含在classpath中的jar。戴夫感謝您help.' <解壓的src = 「$ {} zip.name」 目標= 「$ {base.temp.dir}」> \t \t \t \t \t \t <包括名稱=「測試/ ant-的contrib。罐 「/> \t \t \t \t \t \t \t \t \t \t \t \t \t \t' – simplysiby

0

試試「拉鍊」,而不是「罐子」:

<property url="zip:file:/D:/testing.zip!/testing/ant-contrib.jar" />

+0

它顯示「java.net.MalformedURLException:未知的協議:zip」 – simplysiby

0

不完全確定你在做什麼,但URL總是有兩個正斜槓作爲分隔符。例如,在Subversion中你會做file://D:/testing.zip!/testing/ant-contrib.jar

現在<property>任務中的URL規範應該指向javaspec'd property file,所以我不認爲jar會起作用。

我可以告訴你的是,Java的寫法是,它可以讀取拉鍊和罐子裏的文件,而無需先解壓縮它們。如果您將testing.zip解壓縮到一個名爲testing.zip的目錄中並從中訪問文件,或將其保存爲zip文件,則在Java中應該沒有區別。您應該能夠將它包含在路徑名稱(sans感嘆號)中:

<path id="classpath> 
    <pathelement path="D:/testing.zip/testing/ant-contrib.jar"/> 
    <yadda, yadda, yadda/> 
</path> 

這應該有效。

你可以嘗試的是將testing.zip解壓縮到一個同名的目錄中,看看你是否可以訪問ant-contrib.jar中的文件。然後,嘗試壓縮testing.zip並查看是否有任何區別。不應該有。

+0

大衛您好,我試圖如果「testing.zip」是一個文件夾,它正在讀取該文件,但如果「testing.zip」是一個zip文件,則無法找到該jar文件。 – simplysiby