Невозможно сделать ant-скрипт с помощью swtjar - PullRequest
0 голосов
/ 02 февраля 2012

Я пытаюсь сделать кроссплатформенный .jar программы, которая использует SWT для своего GUI.Я наткнулся на это и это , и попытался использовать его в моей собственной программе.Я не очень разбираюсь в 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

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012

Я оставил комментарий с запросом о выходе из этой цели муравья.

В то же время, вы включаете ваши 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 в формате «SWT- -. 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/

0 голосов
/ 19 августа 2013

Я знаю, что это действительно старый вопрос, но я нашел решение, которое сработало для меня, но, вероятно, не всем поможет.Видите ли, 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/

против BUILD FAILED, сгенерированного муравьем:

/FlippyChat MSG/

Поскольку SWTJar добавляет 20, он смотрит не в том месте и не может найти свою банку.

mchr, если вычитая это, вы можете это исправить?

Тем временем я бы рекомендовал использовать дефис (-) или подчеркивание (_) вместо пробела.В любом случае, это стандарт программирования.

...