我试图制作一个使用SWT作为其GUI的程序的跨平台.jar。我偶然发现了this和this,并试图在自己的程序中使用它。我对ant脚本不是很有经验,并且该程序的构建路径中还有很多其他.jars,因此我使用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
最佳答案
我已经发表评论,要求从运行此ant目标获得输出。
同时,您错误地包含了swt罐子,并使用了错误的名称。您正在使用:
<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罐子
重命名的SWT jar应该包含如下内容。
<!-- SWT Jars -->
<fileset dir="./libs" includes="swt-win32-3.7.1.jar" />
swtjar网站上已经介绍了大多数内容:http://mchr3k.github.com/swtjar/