2017-01-03 10 views
1

私は私のサーバーのコードを実行しようと...私はJEEソケットプロジェクトSLF4Jのエラーを取得しています:クラスのロードに失敗しました「org.slf4j.impl.StaticLoggerBinder」

Serverコード

package Socket; 
import java.io.IOException; 
import java.net.InetSocketAddress; 
import java.nio.charset.Charset; 
import org.apache.mina.core.service.IoAcceptor; 
import org.apache.mina.core.session.IdleStatus; 
import org.apache.mina.filter.codec.ProtocolCodecFilter; 
import org.apache.mina.filter.codec.textline.TextLineCodecFactory; 
import org.apache.mina.filter.logging.LoggingFilter; 
import org.apache.mina.transport.socket.nio.NioSocketAcceptor; 

public class MinaTimeServer 
{ 

    private static final int PORT = 1865; 

    public static void main(String[] args) throws IOException 
    { 
     IoAcceptor acceptor = new NioSocketAcceptor(); 
     acceptor.getFilterChain().addLast("logger", new LoggingFilter()); 
     acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8")))); 
     acceptor.setHandler(new TimeServerHandler()); 
     acceptor.getSessionConfig().setReadBufferSize(2048); 
     acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10); 
     acceptor.bind(new InetSocketAddress(PORT)); 
    } 
} 

**Server Handler Code** 

package Socket; 

import java.util.Date; 

import org.apache.mina.core.session.IdleStatus; 
import org.apache.mina.core.service.IoHandlerAdapter; 
import org.apache.mina.core.session.IoSession; 

public class TimeServerHandler extends IoHandlerAdapter 
{ 

@Override 
public void exceptionCaught(IoSession session, Throwable cause) throws Exception 
{ 
    cause.printStackTrace(); 
} 
@Override 
public void messageReceived(IoSession session, Object message) throws Exception 
{ 
    String str = message.toString(); 
    System.out.println(str); 
    if(str.trim().equalsIgnoreCase("quit")) { 
     session.close(); 
     return; 
    } 
    Date date = new Date(); 
    session.write("Thank you client"+date.toString()); 
    System.out.println("Message written..."); 
} 
@Override 
public void sessionIdle(IoSession session, IdleStatus status) throws Exception 
{ 
    System.out.println("IDLE " + session.getIdleCount(status)); 
} 
} 
私のMaven POMのxmlファイルが存在し

<dependency> 
<groupId>org.apache.mina</groupId> 
<artifactId>mina-core</artifactId> 
<version>2.0.4</version> 
</dependency> 
<dependency> 
    <groupId> org.apache.cassandra</groupId> 
    <artifactId>cassandra-all</artifactId> 
    <version>0.8.1</version> 

<exclusions> 
    <exclusion> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    </exclusion> 
    <exclusion> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    </exclusion> 
</exclusions> 

しかし、まだサーバーは実行中であり、クライアントがサーバーに接続されている場合、メッセージの代わりにIDLE 1、IDLE 2、IDLE 3、IDLE 4 .... が繰り返し印刷されます。

+0

あなたは、あなたのクラスパス – Jens

+0

でslf4j.jarを欠場私はすでにのための依存関係を持っていますそれ 。正確な依存関係は何でしょうか教えてください。 –

答えて

0

はあなたのコードが出力されます:

SLF4J:クラス "org.slf4j.impl.StaticLoggerBinder" をロードできませんでした。 SLF4J:ノーオペレーション(NOP)ロガーのデフォルト設定 SLF4J:詳細はhttp://www.slf4j.org/codes.html#StaticLoggerBinderを参照してください。

つまり、org.slf4j.impl.StaticLoggerBinderクラスをメモリにロードできませんでした。これは、適切なSLF4Jバインディングがクラスパス上に見つからない場合に発生します。
---- 参照

SLF4J warning or error messages and their meaningsからだから、代替ソリューションは、あなたのpom.xmlにこの依存関係を追加します。

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-simple</artifactId> 
    <version>1.7.22</version> 
</dependency> 
+0

はいそれは働いた.... –

関連する問題