2016-01-13 92 views
0

我正在研究一个具有Maven特性的小型RCP项目,现在我希望添加log4j依赖项。
为此我所做的是:如何使用Maven在RCP应用程序中使用log4j?

  1. 添加log4j.properties里面的项目bin文件夹下。 bin是生成所有类文件的文件夹。文件看起来像这样:
# Root logger option 
log4j.rootLogger=DEBUG, stdout, file 

# Redirect log messages to console 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

# Redirect log messages to a log file, support file rolling. 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=C:\\Srijani\\Personal Workspace\\RCP\\EditorApp\\log\\Application.log 
log4j.appender.file.MaxFileSize=5MB 
log4j.appender.file.MaxBackupIndex=10 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 
  • 添加这种依赖性在pom.xml中
  • <dependencies> 
        <dependency> 
        <groupId>log4j</groupId> 
        <artifactId>log4j</artifactId> 
        <version>1.2.17</version> 
        </dependency> 
        </dependencies> 
    
  • 在Java代码我写的是这样的:
  • import org.apache.log4j.Logger; 
    
    import com.app.editor.constants.Constants; 
    
    public class DatabaseConnection { 
        final static Logger logger = Logger.getLogger(DatabaseConnection.class); 
    } 
    

    此代码编译时不会产生任何问题。但是,运行代码时,我得到这个错误:

    !ENTRY org.eclipse.e4.ui.workbench 4 0 2016-01-13 13:50:35.397 
    !MESSAGE Unable to create class 'org.eclipse.ui.internal.e4.compatibility.CompatibilityView' from bundle '55' 
    !STACK 0 
    org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: org/apache/log4j/Logger 
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:62) 
    

    注:我没加任何东西MANIFEST.MF和build.properties。 请帮忙!

    谢谢

    更新:有问题,但不知道如何解决它。当我手动下载jar并将其设置到类路径中时,我可以在Eclipse RCP中使用log4j。但是,当我尝试通过Maven下载它时,它不起作用。任何想法为什么发生这种情况?

    +0

    你得到的NoClassDefFoundError,更好您检查,一旦Log4j- .jar文件被下载或不符合.m2目录(库)。此外,您必须声明Log4j.properties文件以告知系统放置日志文件的位置以及所有文件。 – SubbaReddy

    +0

    已经在C:\ Users \ me \ .m2 \ repository \ log4j \ log4j \ 1.2.17文件夹下载了log4j.jar文件夹 –

    +0

    “REST项目具有Maven特性”是什么意思?你如何管理RCP的依赖关系?你如何构建和运行你的RCP项目? – jhyot

    回答

    0

    我希望在这个网站上解释清楚。这对你有帮助。

    http://www.mkyong.com/logging/log4j-hello-world-example/

    我真诚的建议是,之前实施的项目尝试创建一个样本的例子。如果成功,您可以将其应用到项目中。

    +0

    我只关注这个网站。对于示例项目,我成功了。但是,当我尝试将它应用于Eclipse RCP项目时,它不起作用。 –

    +0

    做一件事,清理并建造一次你的项目。 – SubbaReddy

    +0

    只有链接的答案在SO上通常不被接受,因为链接可能会失效。你可以将来源的基本部分添加到答案中吗?(没有downvote,因为我认为这仍然有帮助) – Fildor

    1

    如果您将Maven与Eclipse RCP结合使用,则应考虑使用Tycho [1]。 Tycho使用MANIFEST第一种方法,因此您不需要编辑pom文件。

    另外,您应该将log4j.properties放入一个带有log4j-bundle作为主机插件的片段中。

    [1] https://eclipse.org/tycho/

    相关问题