Ответ 1
Не уверен, что было с IntellJ, но я снова восстановил артефакты, и все было в порядке.
hadoop jar <Jar-name>
java -jar <Jar-name>
Все работает нормально.
У меня есть простой пример
public class FileSystemReadFile {
public static void main(String[] args) throws IOException {
System.out.println("Reading the file" + args[0]);
}
}
который создается в IntelliJ, где я хочу создать JAR файл; Итак, что я сделал:
MANIFEST.MF
находится в src\main\resources\META-INF\
, как уже упоминалось здесь, на сайте.java <name>.jar
Вы можете увидеть, что основной класс добавлен в MANIFEST, и расположение манифеста также прекрасное.
Когда я открываю созданный JAR файл, я вижу одно и то же содержимое MANIFEST, я вижу множество модулей зависимостей, но я не вижу свой класс!
Я подозреваю, что это причина. Любые идеи?
Не уверен, что было с IntellJ, но я снова восстановил артефакты, и все было в порядке.
hadoop jar <Jar-name>
java -jar <Jar-name>
Все работает нормально.
Если вы включите какие-либо подписанные JAR в ваше приложение, а затем используйте IntelliJ для сборки артефактов, он будет извлекать JARS и связывать их с вашим скомпилированным выводом.
В этом случае возникает исключение безопасности JAVA. Я видел это с Eclipse Paho и Bouncy Castle, которые подписаны.
Вы можете проверить, подписан ли какой-либо из JAR-библиотек библиотеки, используя инструмент jarsigner.
jarsigner -verify -verbose <path to library JAR>
Измените настройку артефакта IntelliJ так, чтобы они попадали в виде библиотек, а не извлекались. Извлечение отменяет сертификат, как вы ожидали.
Попробуйте создать фиктивный проект только с Main. Добавьте 1 библиотеку JAR (которую вы пытаетесь построить вместе) за раз. Каждый раз создавайте выходной JAR до разрыва Main. Вот как я нашел это.
IntelliJ должен предупредить вас.....