Jar Встроенный IntelliJ не распознает библиотеки внутри jar - PullRequest
1 голос
/ 03 мая 2019

В IntelliJ это дает вам возможность поместить библиотеку (зависимость) в артефакт, который вы создаете.Я хочу сделать это, потому что некоторые из моих библиотек имеют цифровую подпись, и если я извлекаю их в банку, это приводит к тому, что он не запускается (основной метод не найден)

Однако, когда я делаю это, я получаю кучуисключений, говорящих, что класс не может быть найден.Есть ли специальный способ, которым я должен настроить эту настройку jar, чтобы она могла находить jar внутри артефакта?

Ответы [ 2 ]

0 голосов
/ 06 мая 2019
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.1</version>
                <configuration>
                    <filters>
                        <filter>
                            <artifact>*:*</artifact>
                            <excludes>
                                <exclude>META-INF/*.SF</exclude>
                                <exclude>META-INF/*.DSA</exclude>
                                <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                        </filter>
                    </filters>
                </configuration>

                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>sample.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.5</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>sample.Main</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Предыдущая установка maven решила эту проблему для меня.Затем я запустил mvn clean package и он работает.

0 голосов
/ 03 мая 2019

Файл JAR, помещенный в другой файл JAR, не будет работать из коробки с IntelliJ IDEA.Для обработки таких зависимостей требуется собственный загрузчик классов.Вы либо кладете баночки рядом с основной банкой и связываете их через манифест , либо снимаете цифровую подпись с зависимых банок и распаковываете их содержимое в одну банку.

Другой вариант - создать банку с помощью плагинов Maven или Gradle, которые могут лучше обрабатывать подписанные банки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...