2010-10-12 2 views
1

В настоящее время я работаю над интеграцией приложения Java. Общая архитектура для текстовой инженерии (GATE) с приложением Rails с использованием архитектуры JRuby. Когда мы работали над интеграцией JRuby с log4j, я получаю следующее сообщение об ошибке:Интеграция Jruby log4j

0 [main] DEBUG Main.class - Hello world 
gate/Gate.java:80:in `<clinit>': java.lang.NoClassDefFoundError: org/apache/log4 

J/Logger (NativeException) от gateapp/Main.java: 86: в `главный от test.rb: 12

test.rb - название программы ruby.

Я попытался импортировать все библиотеки apache log4j и включил файл класса в файл test.rb.

Когда я запускаю только программу Java, она работает нормально. Но когда я сгенерировать файл банку и включить их в Ruby-файл (test.rb), я получаю эту ошибку

java.lang.NoClassDefFoundError: org/apache/log4j/Logger (NativeException) problem is occuring. How to deal with this problem ? 

ответ

0

Вы должны убедиться, что файл log4j JAR находится в вашем пути к классам. Один из способов сделать это - установить переменную CLASSPATH в вашей среде. Другим способом было бы назвать требуется в коде рубинового как

require "/some/path/MyStuff.jar" 
0

Вот мой конфиг, чтобы установить его с couchbase Java SDK

include Java 

def setup_log4j 
    java::lang.System.setProperty("net.spy.log.LoggerImpl", "net.spy.memcached.compat.log.Log4JLogger") 

    fa = Java::OrgApacheLog4j::FileAppender.new(); 
    fa.setName("FileLogger"); 

    fa.setFile("./log/#{Rails.env}.log"); 
    fa.setLayout(Java::OrgApacheLog4j::PatternLayout.new("%d %-5p [%c{1}] %m%n")); 
    fa.setThreshold(Java::OrgApacheLog4j::Level::INFO); 
    fa.setAppend(true); 
    fa.activateOptions(); 
    Java::OrgApacheLog4j::Logger.getRootLogger().addAppender(fa) 
end 

Только учтите, что я обязательно файл lo4j.jar ранее.
Стоит упомянуть, что есть проект под названием log4jruby.

Смежные вопросы