Не удалось сделать ant script с swtjar
Я пытаюсь создать кросс-платформу .jar программы, которая использует SWT для своего графического интерфейса. Я наткнулся на этот и этот, и попытался использовать его в своих собственных программа. Я не очень разбираюсь в сценариях ant, и эта программа имеет много других .jars в пути сборки, поэтому я использовал eclipse для создания ant build script, который я модифицировал, чтобы включить задачу swtjar. Однако, когда script запускается и переходит к задаче swtjar, он терпит неудачу и говорит, что The archive swtjar.jar doesn't exist
. Я также попытался сделать законный файл сборки ранее, а также получил эту ошибку. Есть что-то, что мне не хватает? Я включил swtjar.jar в путь сборки и taskdef в верхней части script.
Здесь script:
<?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
Ответы
Ответ 1
Я оставил комментарий с просьбой о выходе из этой цели ant.
В то же время вы включаете свои багеты с ошибками неправильно и с неправильными именами. Вы используете:
<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-банки в формате "swt- <platform> <bitness> -. jar". Поэтому в вашем случае вам нужно переименовать "org.eclipse.swt.win32.win32.x86_3.7.1.v3738a.jar" в "swt-win32-3.7.1.jar".
- Вы не должны включать swt-банки с помощью zipfileset
Ваша переименованная SWT-банка должна быть включена следующим образом.
<!-- SWT Jars -->
<fileset dir="./libs" includes="swt-win32-3.7.1.jar" />
Большинство из них уже описано на сайте swtjar: http://mchr3k.github.com/swtjar/
Ответ 2
Я знаю, что это действительно старый вопрос, но я нашел решение, которое сработало для меня, но это, вероятно, не поможет всем. Видите ли, SWTJar ненавидит пробелы.
Я имею в виду, что в вашем пути к каталогу не могут быть пробелы. В противном случае SWTJar анализирует путь неправильно, как показано ниже (мой старый jar script вывод):
[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/
по сравнению с BUILD FAILED
, сгенерированным с помощью ant:
/FlippyChat MSG/
Так как SWTJar добавляет 20, он выглядит не в том месте и не может найти свою банку.
mchr, если вы читаете это, можете ли вы его исправить?
Тем временем я рекомендую использовать дефис (-) или подчеркивание (_) вместо пробела. В любом случае, это стандарт программирования.