one-jar удалить подробную информацию о предупреждении о загрузке приложения - PullRequest
13 голосов
/ 08 сентября 2010

Я использую Maven с плагином one-jar, но когда я запускаю исполняемый файл one 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)

Ответы [ 9 ]

10 голосов
/ 13 декабря 2012

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

one-jar.silent=true

, будет полностью подавлять сообщения журнала с одним jar.

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

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

8 голосов
/ 09 сентября 2010

Кажется, что эти сообщения печатаются при работе в "подробном" режиме. Чего я не понимаю, так это того, что подробный режим не активирован по умолчанию.

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

java -Done-jar.verbose=false -jar <one-jar.jar>
3 голосов
/ 28 марта 2013

Относительно последней и самой лучшей 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 найти обходной путь.

1 голос
/ 12 апреля 2013

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

1 голос
/ 16 декабря 2010

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

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

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

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

0 голосов
/ 05 августа 2016

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

    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

Пожалуйста, перечитайте часть лицензии «как есть, без гарантии» несколько раз:)

0 голосов
/ 03 января 2013

Есть два места, чтобы получить плагин для одной банки.

  1. https://github.com/jolira/onejar-maven-plugin
  2. http://code.google.com/p/onejar-maven-plugin/

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

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

0 голосов
/ 07 марта 2012

Я обновил с 1.4.3 до 1.4.4, как кто-то предлагал ранее, и это сделало

0 голосов
/ 11 октября 2010

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

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