2014-10-27 31 views
0

我無法開始使用gridgain,我正在使用gridgain示例附帶的xml配置文件example-cache.xml(是否有更簡單的配置文件?) 。 當我開始gridgain如下我有一個GridExceptionGridException無法在GridGain啓動時爲Log4j添加無操作記錄器

public static void main(String[] args) throws GridException, URISyntaxException { 
    URL url = GridgainCache.class.getClassLoader().getResource("gridgain.xml"); 
    String filename = url.toURI().toString(); 
    System.out.println("Reading gridgain conf from: "+filename); 
    Grid g = GridGain.start(filename); 
    ... 
} 

這裏充滿堆棧跟蹤:

Exception in thread "main" class org.gridgain.grid.GridException: Failed to add no-op logger for Log4j. 
For more information see: 
    Troubleshooting:  http://bit.ly/GridGain-Troubleshooting 
    Documentation Center: http://bit.ly/GridGain-Documentation 

    at org.gridgain.grid.util.GridUtils.addLog4jNoOpLogger(GridUtils.java:7709) 
    at org.gridgain.grid.kernal.GridGainEx.start(GridGainEx.java:714) 
    at org.gridgain.grid.kernal.GridGainEx.start(GridGainEx.java:659) 
    at org.gridgain.grid.kernal.GridGainEx.start(GridGainEx.java:522) 
    at org.gridgain.grid.kernal.GridGainEx.start(GridGainEx.java:492) 
    at org.gridgain.grid.GridGain.start(GridGain.java:314) 
    at com.examples.gridgain.GridgainCache.main(GridgainCache.java:102) 
Caused by: java.lang.IllegalArgumentException: argument type mismatch 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.gridgain.grid.util.GridUtils.addLog4jNoOpLogger(GridUtils.java:7706) 
    ... 6 more 

我需要配置log4j?我正在使用slf4j。

+0

它看起來像你的類路徑中有log4j(否則你會得到ClassNotFoundException)。什麼版本的GridGain和你使用的是什麼版本的log4j? – Alexey 2014-10-27 19:55:43

+0

我有'log4j-1.2.12.jar'和'gridgain-core-6.5.0.jar'。 – bachr 2014-10-28 08:29:45

+0

爲了確保,你有maven依賴於「gridgain-log4j」的maven模塊嗎?如果是的話,GridGain使用log4j-1.2.17。你能切換到這個版本嗎? – Dmitriy 2014-10-29 14:32:46

回答

0

GridGain檢查是否存在在類路徑的Log4j類和嘗試自動添加Log4j的記錄,而你的情況導致了錯誤,因爲Log4j的版本不匹配的。

既然你不能切換到由GridGain支持Log4j的v1.2.17,你必須手工配置記錄器。我會用SLF4J橋匹配的Log4j的版本,你已經有(注意,您將需要添加gridgain-SLF4J依賴):

<property name="gridLogger"> 
    <bean class="org.gridgain.grid.logger.slf4j.GridSlf4jLogger"/> 
</property> 

另一種選擇是使用Java日誌記錄(無需額外的依賴)

<property name="gridLogger"> 
    <bean class="org.gridgain.grid.logger.java.GridJavaLogger"/> 
</property>