java - 无法使用 swtjar 制作 ant 脚本

标签 java ant jar cross-platform swt

我正在尝试制作一个使用 SWT 作为 GUI 的程序的跨平台 .jar。我偶然发现thisthis ,并尝试在我自己的程序中使用它。我对 ant 脚本不太有经验,而且这个程序的构建路径中有很多其他 .jar,所以我使用 eclipse 生成一个 ant 构建脚本,我对其进行了修改以包含 swtjar 任务。但是,当脚本运行并进入 swtjar 任务时,它会失败并显示存档 swtjar.jar 不存在。我之前也尝试过制作一个合法的构建文件,但也遇到了这个错误。我有什么遗漏的吗?我已将 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

最佳答案

我留下了一条评论,询问运行此 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/

关于java - 无法使用 swtjar 制作 ant 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107509/

相关文章:

java - 将显示名称字符串从 "First M. Last"更改为 "Last, First M."?

java - 如何判断 JEditorPane/TextPane 文档或页面是否已完成加载?

java - OSX Java 的更改是否删除了某些 ant 功能?

javascript - 在 Ant 中使用 JavaScript

java - Maven 复制依赖项不起作用

java - 使用启动命令时批量输出重定向

java - 出现错误 : Could not find or load main class while opening executable Jar file

java - 如何在java中单击按钮时显示组合框?

java - Spring-WS 和 "Error attempting to save SOAPPart"

java - 在 Java 中使用外部库