Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > org.apache.log4j + NetBeans 6.5


Автор: Alexandering 26.10.2009, 23:38
Имею: OS - Ubuntu-9.04-amd64
IDE - NetBeans 6.5
-------------------------
Никак не хочет работать org.apache.log4j
В CLASSPATH JAVA_HOME ничего не писал.
Скачал org.apache.log4j, распокавал. В своем проекте в НетБинсе в свойствах проекта подключил log4j-1.2.15.jar так как советуют в Readme.
Насоздавал логгеров, сделал log4j.properties по образцу.
Теперь:
кинул log4j.properties в каталог к моему проекту.
Если компилировать в ИДЕ, то все работает так как надо, находится мой log4j.properties и в зависимости от него пишутся разные логи.
--------------------------
Но если запускать скомпилированный *.jar не из ИДЕ: java -jar NetServer.jar, то на консоль выводится:

log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at java.io.FileInputStream.<init>(FileInputStream.java:66)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:316)
    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:342)
    at NetServer.NetServer.main(NetServer.java:20)
log4j:ERROR Ignoring configuration file [log4j.properties].
log4j:WARN No appenders could be found for logger (NetServer.NetServer).
log4j:WARN Please initialize the log4j system properly.
  
-------------------
Как решить проблему? Наверняка в CLASSPATH JAVA_HOME надо чего-то прописывать.....но прописав от юзера: export CLASSPATH=/usr/lib/jvm/blabla
И затем дав команду: echo $CLASSPATH имею пустую строку. CLASSPATH  изменяется только от суперпользователя.

Автор: Galaran 27.10.2009, 01:23
Log4j в CLASSPATH прописан нормально, но он не может найти конфиг. Проверь, чтобы конфиг был в корне jar

Автор: Alexandr87 27.10.2009, 06:02
при запуске программы из Netbeans текущей рабочей директорией (pwd) является папка с проектом. Там скорее всего этот файл и лежит.
А если ты запускаешь программу с помощью java -jar NetServer.jar, то, скорее всего, ты запускаешь программу находясь в директории dist. Соответственно, конфигурационного файла в текущей директории нет - отсюда и проблемы.

Автор: ivanovpv 27.10.2009, 11:30
Цитата(Alexandering @  26.10.2009,  23:38 Найти цитируемый пост)
Никак не хочет работать org.apache.log4j


Надо сказать Нетбинсу, чтобы копировал log4j.properties в ваш JAR, а то получается, что под Нетбинсом log4j.properties лежит в CLASSPATH, а когда запускаете уже упакованным в JAR в CLASSPATH нет log4j.properties - вот потому то и ругается LOG4J.

Автор: COVD 27.10.2009, 16:07
Если не ошибаюсь, проперти файлы по умолчанию укладываются Нетбинсом в jar , если эти файлы лежат в папке src. Однако это тоже не всегда гарантирует их видимость - надо не сделать ошибок при их загрузке. В Нетбинсе в шаблоне проекта Java Desktop Application принято иметь внутри пакетов папки resources, куда и кладутся ресурсы пакета - проперти, имиджи и пр. К приложению подключается библиотека Swing Application Framework, обеспечивающая всю необходимую функциональность. Можно делать проект по этому шаблону.

С другой стороны, мне, например, неудобно иметь проперти файлы внутри jar. Хотелось бы иметь возможность менять параметры без перекомпиляции проекта. Когда же проперти лежат внутри jar, то их редактирование усложняется - надо вынуть файл из архива, отредактировать, упаковать обратно, т.е на компьютере, где работает приложение, должен быть установлен архиватор.

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

В Нетбинсе результатом билда для проектов - приложений (Java Application и др.) является папка dist.  Это дистрибутив, т.е. папка и есть переносимое приложение. Внутри папки лежит собственно jar, а также папка lib с библиотеками. Проект можно настроить так, чтобы при билде внутри dist создавалась еще и папка, например, config , куда и копировались бы автоматически проперти файлы. Для осуществления этого следует редактировать build.xml проекта. Тогда проперти будут легко доступны для редактирования любым текстовым редактором. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)