One-jar удалить подробные предупреждения о загрузке приложения

Я использую Maven, с одним jar pluggin, но когда я запускаю один исполняемый файл jar, меня приветствует стена предупреждений, это неприемлемо для использования

Я просмотрел каждый доступный ресурс на одной банке и не вижу инструкции о том, как сохранить банку для извлечения тонны предупреждений при запуске, кто-нибудь решил это?

JarClassLoader: Warning: META-INF/LICENSE.txt in lib/commons-io-1.4.jar is hidden by lib/commons-collections-3.2.1.jar (with different bytecode)
JarClassLoader: Warning: META-INF/NOTICE.txt in lib/commons-io-1.4.jar is hidden by lib/commons-collections-3.2.1.jar (with different bytecode)
JarClassLoader: Warning: META-INF/LICENSE.txt in lib/commons-lang-2.4.jar is hidden by lib/commons-collections-3.2.1.jar (with different bytecode)
JarClassLoader: Warning: META-INF/NOTICE.txt in lib/commons-lang-2.4.jar is hidden by lib/commons-collections-3.2.1.jar (with different bytecode)

Ответы

Ответ 1

Нет способа сделать это без изменения исходного кода

Ответ 2

Я обнаружил, что если вы создаете файл one-jar.properties и помещаете его в корень пути пути выполнения (т.е. где заканчиваются ваши файлы .class проекта), он будет считываться одним классом загрузки. Запись в этом файле свойств, например:

one-jar.silent=true

будет полностью подавлять сообщения с одним банком.

Другие значения, которые ищет класс загрузки, это one-jar.info и one-jar.verbose.

Уровень по умолчанию - INFO. Как указано выше, Pascal Thivent, вы также можете установить свойство System через командную строку с параметром -D команды java, но если вы не хотите указывать или помнить об этом, подход к файлу свойств отлично работает.

Ответ 3

Кажется, что эти сообщения печатаются при работе в режиме "verbose". То, что я не понимаю, заключается в том, что по умолчанию режим verbose не активируется.

Во всяком случае, вы могли бы попытаться установить системное свойство one-jar.verbose на false при запуске вашей одной банки:

java -Done-jar.verbose=false -jar <one-jar.jar>

Ответ 4

Относительно новейшего и самого большого One-Jar v0.97: Проблема в этом. Файл "one -jar.properties" действительно должен быть помещен в корень последней банки. Разумеется, у него будет одна строка, которая читает one-jar.silent=true. Это можно сделать в Ant, установив что-то вроде <fileset dir="${build.dir}" includes="**/*.properties" /> внутри задачи <one-jar ...>.

Он также может быть легко помещен в командную строку с помощью команды java -Done-jar.silent=true -jar foo-jar-made-by-one-jar.jar.

Тем не менее, он все равно сообщит о одной строке, что он загружает свойства из встроенного класса загрузки One-Jar перед тем, как идти в тишину. Невозможно обойти это без изменения исходного кода, начиная со строки 317 в Boot.java, где метод initializeProperties регистрирует операции загрузки/слияния. См. Идентификатор ошибки 3609329 SourceForge в блоге отслеживания ошибок One-Jar, где я предоставил быстрое исправление.

Сводка: добавив файл one-jar.properties, удаляется только одна строка постороннего ведения журнала. Это должно помочь пользователям Maven найти обходной путь.

Ответ 5

Это намного лучше в новой версии плагина Maven one-jar.

Добавить репозиторий плагинов:

    <pluginRepository>
        <id>one-jar</id>
        <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url>
    </pluginRepository>

и используйте версию 1.4.4 в определении плагина.

Ответ 6

Я нашел, что мне нужно использовать версию 1.4.5 (1.4.4 не работает), а затем предложение поместить файл one -jar.properties на корень моего файла jar с одной строкой, читающей one-jar.silent=true, работал у меня.

Ответ 7

Я повысил с 1.4.3 до 1.4.4 как кто-то предложил раньше, и это сделало сделку

Ответ 8

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

Первая претендует на то, чтобы быть только копией второго, которая была подана из основного хранилища Maven. Мне было предложено использовать этот, поскольку для него не требуется специфицировать дополнительный репозиторий плагинов, который требуется для второго. Однако, когда я переключился на использование второго (официального), эта проблема ушла для меня.

Примечание. Передача -Done-jar.verbose = false работала для меня, но не была установлена ​​в файле one-jar.properties, как указано выше.

Ответ 9

Я представил патч для этого довольно давно, что просто делает поведение по умолчанию молчащим.

    public static final int LOGLEVEL_VERBOSE = 5;

    // Loglevel for all loggers.
 -  private static int loglevel = LOGLEVEL_INFO;
 +  private static int loglevel = LOGLEVEL_NONE;

    private final String prefix;

AFAIK, он никогда не применялся. Недавно я исправил еще одну проблему, поэтому я поставил свои исправления здесь:

https://github.com/nsoft/uno-jar

Повторно просмотрите часть лицензии "как есть, без гарантии" несколько раз:)