2011-11-28 57 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