JAR classpath и внешние банки - PullRequest
0 голосов
/ 11 мая 2011

У меня действительно есть 2 проблемы

Я использую eclipse -> export project для создания файла jar для моей простой программы для рабочего стола (GUI)
Он генерирует файл jar и скрипт ant.

первая проблема: сгенерированный jar отлично работает при двойном щелчке.
Когда я использую сгенерированный ant-скрипт для создания jar
, он не работает.Что может быть не так с такой целью (при условии, что все зависимости выполнены)

 <target name="create_run_jar">
        <jar destfile="G:/dev/myproj/myproj.jar">
            <manifest>
                <attribute name="Main-Class" value="view.myproj"/>
                <attribute name="Class-Path" value=". myproj_lib/grouplayout.jar"/>
            </manifest>
            <fileset dir="G:/dev/myproj/bin"/>
        </jar>
        <delete dir="G:/dev/myproj/myproj_lib"/>
        <mkdir dir="G:/dev/myproj/myproj_lib"/>
        <copy file="G:/dev/.metadata/.plugins/org.dyno.visual.swing/layoutext/grouplayout.jar" todir="G:/dev/myproj/myproj"/>
    </target>  

// nevemind
// Вторая проблема:
// когда ядвойной щелчок на автоматически сгенерированном jar-файле, который запускает программа и работает нормально.
// когда я выполняю java myjar из командной строки, я получаю исключение для основного класса, не найденное ..
// странно, да?

Ответы [ 3 ]

1 голос
/ 11 мая 2011

Я предлагаю взять файлы JAR, сгенерированные двумя способами, с помощью команды jar развернуть их во временные каталоги, а затем использовать diff в рекурсивном режиме для их сравнения.

Однако я подозреваю, что @Pace решил проблему; то есть вы используете относительные пути в записи манифеста Class-Path, и это может вызвать проблемы.

0 голосов
/ 11 мая 2011

Цель ant создает манифест с атрибутом classpath.Если вы посмотрите на эти пути, то заметите, что они относятся к текущему каталогу.Когда вы выполняете java -jar из командной строки, вы находитесь в каталоге ...

G:/dev/myproj

...?

0 голосов
/ 11 мая 2011

java -jar <jar name> - правильный способ выполнить банку.

...