Баночка в баночке с мавеном - PullRequest
0 голосов
/ 13 мая 2018

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

Использование этого плагина в моей конфигурации pom:

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.rilent.App</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>

А у меня есть эта ссылка на местную банку

    ...
    <dependency>
        <groupId>it.sauronsoftware.jave</groupId>
        <artifactId>jave</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/jave-1.0.2.jar</systemPath>
    </dependency>

Я использую эту команду для создания моего приложения, которое возвращает BUILD SUCCESS:

 mvn clean compile assembly:single

но когда я пытаюсь выполнить мою программу, она в какой-то момент вылетает, возвращая эту ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: it/sauronsoftware/jave/InputFormatException
( a class from the .jar)

Я попытался распаковать мою главную банку, чтобы увидеть ее содержимое: enter image description here

что плохого в том, как я создаю свою банку?

edit @ Торбьерн Равн Андерсен

Я тоже так пробовал, я добавил это к своему пом:

<!-- https://mvnrepository.com/artifact/com.jolira/onejar-maven-plugin -->
<dependency>
    <groupId>com.jolira</groupId>
    <artifactId>onejar-maven-plugin</artifactId>
    <version>1.4.4</version>
</dependency>

затем я компилирую с mvn compile, и когда я пытаюсь запустить .jar, я получаю эту ошибку

no main manifest attribute, in .\myapp-0.0.1-SNAPSHOT.jar что я опять делаю не так ...?

Примечание: в моем банке также есть .exe

1 Ответ

0 голосов
/ 14 мая 2018

Стандартные загрузчики классов не могут загружать классы из jar внутри jar.Файлы EXE не могут быть запущены из jar-файлов.

Это не значит, что это невозможно, но немного громоздко и, возможно, выше вашего текущего уровня квалификации.Один Jar (http://one -jar.sourceforge.net / ) может показаться вам интересным, поскольку он автоматизирует именно это.

Для проекта Maven у меня был хороший опыт создания структуры развертыванияи скрипты с appassembler.http://www.mojohaus.org/appassembler/appassembler-maven-plugin/

...