log4J с Java-апплетом и Java-плагином2

У меня есть приложение java-апплета, работающее с java plugin2. Конфигурация апплета использует файл JNLP, что поддерживается архитектурой подключаемого модуля Java следующего поколения .

Sun заявляет, что вы не должны использовать Class .forName в контексте приложения java webstart (или java-апплета).

Но я предполагаю, что Log4j делает это для настройки регистраторов в соответствии с моей конфигурацией log4j.properties. Итак, я получаю много неприятных исключений, которые, я почти уверен, связаны с этим.

  1. Можно ли изменить поведение log4j, чтобы не использовать Class.forName?
  2. На самом деле я использую slf4j при поддержке log4j. Если я перейду на логбэк, будут ли у меня такие же проблемы?

person tuler    schedule 13.01.2010    source источник
comment
Log4j делает это правильно, не вызывая Class.forName. Так что дело в другом.   -  person tuler    schedule 13.01.2010
comment
Class.forname отлично подходит для апплета, по крайней мере, я использовал его постоянно без ошибок в нескольких апплетах за несколько лет. Почему бы не добавить исключение?   -  person Pool    schedule 13.01.2010
comment
Я думаю, что ограничение возникает только тогда, когда вы используете файл JNLP для объявления ресурсов jar-файла апплета (что возможно только в новом плагине java 6u10 +)   -  person tuler    schedule 14.01.2010


Ответы (1)


У нас была такая же проблема в Стендале. В качестве обходного пути вы можете установить системное свойство log4j.ignoreTCL перед инициализацией log4j:

System.setProperty("log4j.ignoreTCL", "true");
person Hendrik Brummermann    schedule 06.11.2010