2016-01-13 46 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/

    相關問題