【问题标题】:Unable to make ant script with swtjar无法使用 swtjar 制作 ant 脚本
【发布时间】:2012-02-24 19:45:04
【问题描述】:

我正在尝试制作一个使用 SWT 作为其 GUI 的程序的跨平台 .jar。我偶然发现了thisthis,并尝试在我自己的程序中使用它。我对ant脚本不是很有经验,而且这个程序的构建路径中有很多其他的.jar,所以我使用eclipse生成了一个ant构建脚本,我对其进行了修改以包含swtjar任务。但是,当脚本运行并到达 swtjar 任务时,它会失败并显示The archive swtjar.jar doesn't exist。我也尝试过更早地制作一个合法的构建文件,但也遇到了这个错误。有什么我想念的吗?我已将 swtjar.jar 包含在构建路径中,并将 taskdef 包含在脚本顶部。

这是脚本:

<?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

【问题讨论】:

  • 请粘贴您如何修改构建脚本以包含 swtjar 的代码
  • 请粘贴您尝试运行此目标时获得的输出
  • 请发布此错误之前的输出行。例如,我自己的一个项目产生以下输出行: [swtjar] \Users\username\Documents\Workspaces\Github\InTrace\org.intrace\lib\swtjar.jar [swtjar] Building jar: C:\Users\用户名\Documents\Workspaces\Github\InTrace\org.intrace\build\jars\intrace-ui.jar。
  • 您能否在您的 C 盘上重试您的项目?当前的 swtjar 任务可能存在错误,无法从 D 盘运行。

标签: java ant jar cross-platform swt


【解决方案1】:

我留下了一条评论,询问运行这个 ant 目标的输出。

与此同时,您错误地包含了您的 swt jar 并且使用了错误的名称。您正在使用:

<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 jar。因此,在您的情况下,您需要将“org.eclipse.swt.win32.win32.x86_3.7.1.v3738a.jar”重命名为“swt-win32-3.7.1.jar”。
  • 您不应使用 zipfileset 包含 swt jar

您重命名的 SWT jar 应包含如下。

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

大部分内容已经在 swtjar 网站上进行了介绍:http://mchr3k.github.com/swtjar/

【讨论】:

  • 啊,抱歉第二点,这是我的错误(最初命名正确)。我尝试排除 swtjar.jar 并改用 swt-win32 jar 的文件集,但不幸的是我仍然遇到同样的错误。奇怪的是,在工作时,我在 之前的最后一行出现了意外的拼写错误,而脚本就这样运行了。我已经用我现在拥有的代码更新了问题中的脚本,以及错误消息。
  • 我有同样的错误:存档 swtjar.jar 不存在。我已按照您的指南进行操作,但总是以同样的错误结束。
  • 您可以发布完整的 build.xml 文件吗?你从哪个目录运行ant?您使用的是什么操作系统?
【解决方案2】:

我知道这是一个非常古老的问题,但我找到了一个对我有用的解决方案,但它可能不会对每个人都有帮助。你看,SWTJar 讨厌空格。

我的意思是,您的目录路径中不能有空格。否则 SWTJar 解析路径错误,如下图(我的旧 jar 脚本输出):

[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/

相对于 ant 生成的BUILD FAILED

/FlippyChat MSG/

由于 SWTJar 添加了 20,所以它在错误的位置查找,找不到它的 jar。

mchr,如果你正在阅读这篇文章,你能解决它吗?

同时,我建议使用连字符 (-) 或下划线 (_) 而不是空格。无论如何,它是编程标准。

【讨论】:

    猜你喜欢
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-04
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多