【问题标题】:Ant - Import jar from within a zip fileAnt - 从 zip 文件中导入 jar
【发布时间】:2011-11-28 13:52:34
【问题描述】:

我想在 zip 中的 ant build.xml 中包含一个 jar 文件 (ant-contrib.jar)。 在不解压缩 zip 文件的情况下如何做到这一点。 我尝试使用 jarURLConnect。

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

但这给了我一个

java.lang.IllegalArgumentException: 格式错误的 \uxxxx 编码。

如果我将“ant-contrib.jar”替换为“test.properties”文件,则不会出错。

有人可以帮忙吗..

【问题讨论】:

    标签: java ant import jar build.xml


    【解决方案1】:

    property 标记用于包含属性,该属性将位于属性文件中。 jar 文件不是属性文件。 property docs 非常清楚。

    您需要unzip 文件才能将其添加到类路径中,然后实际将其添加到类路径中:请参阅path-like structures 文档。不过,它不仅仅是一个属性。

    【讨论】:

    • 谢谢.. 但我认为有一种更简单的方法,无需解压缩,就像包含属性一样.. 这样代码看起来更干净
    • 使用以下代码仅解压缩我需要并包含在类路径中的 jar。感谢戴夫的帮助。&lt;unzip src="${zip.name}" dest="${base.temp.dir}"&gt; &lt;patternset&gt; &lt;include name="testing/ant-contrib.jar"/&gt; &lt;/patternset&gt; &lt;mapper&gt; &lt;globmapper from="testing/*" to="*"/&gt; &lt;/mapper&gt; &lt;/unzip&gt;
    【解决方案2】:

    检查Unzip Task

    【讨论】:

      【解决方案3】:

      尝试“zip”而不是“jar”:

      &lt;property url="zip:file:/D:/testing.zip!/testing/ant-contrib.jar" /&gt;

      【讨论】:

      • 显示“java.net.MalformedURLException: unknown protocol: zip”
      【解决方案4】:

      不完全确定您在做什么,但 URL 总是有两个正斜杠作为分隔符。例如,在 Subversion 中,您可以使用 file://D:/testing.zip!/testing/ant-contrib.jar

      现在&lt;property&gt; 任务中的 URL 规范应该指向 javaspec'd property file,所以我认为 jar 不会起作用。

      我可以告诉你的是,Java 是这样编写的,它可以读取 zip 和 jar 中的文件,而无需先解压缩它们。如果您将 testing.zip 解压缩到名为 testing.zip 的目录中并从那里访问文件,或者将其保存为 zip 文件,那么 Java 应该没有区别。您应该能够将其包含在路径名中(无感叹号):

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

      应该可以的。

      您可以尝试将 testing.zip 解压到同名目录中,看看是否可以访问ant-contrib.jar 中的文件。然后,尝试压缩 testing.zip 并查看是否有任何不同。应该没有。

      【讨论】:

      • 嗨大卫,我尝试了两种方式。如果“testing.zip”是一个文件夹,它正在读取文件。但如果“testing.zip”是一个 zip 文件,它就无法找到 jar。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 2010-11-19
      • 2013-03-09
      • 1970-01-01
      相关资源
      最近更新 更多