我目前正在致力于将Java应用程序的文本工程通用架构(GATE)与使用JRuby架构的Rails应用程序集成在一起。当我们将JRuby与log4j集成时,我得到了以下错误:
0 [main] DEBUG Main.class - Hello world
gate/Gate.java:80:in `<clinit>': java.lang.NoClassDefFoundError: org/apache/log4j/Logger (NativeException) from gateapp/Main.java:86:in‘`main’from test.rb:12
test.rb是ruby程序的名称。
我尝试导入所有的log4j apache库,并将类文件包含在test.rb文件中。
当我单独运行Java程序时,它运行得很好。但是,当我生成jar文件并将它们包含在Ruby文件(test.rb)中时,我得到了这个错误
java.lang.NoClassDefFoundError: org/apache/log4j/Logger (NativeException) problem is occuring. How to deal with this problem ?发布于 2010-10-12 19:46:46
您需要确保log4j JAR文件位于类路径中。一种方法是在您的环境中设置CLASSPATH变量。另一种方法是在ruby代码中调用require,如下所示
require "/some/path/MyStuff.jar" 发布于 2013-04-21 02:26:56
下面是我使用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的项目。
https://stackoverflow.com/questions/3914133
复制相似问题