Search code examples
javaeclipsenoclassdeffounderrorthrift

Thrift server/client with Eclipse NoClassDefFoundError


http://wiki.apache.org/thrift/Thrift%20%26%20Eclipse%20%26%20JUnit%20with%20TServlet

I followed this tutorial step by step until the part where they execute the client and the server. For the serverExample.java I added these imports.

    import org.apache.thrift.server.TServer;
    import org.apache.thrift.server.TThreadPoolServer;
    import org.apache.thrift.transport.TServerSocket;
    import org.apache.thrift.transport.TTransportException;

For the clientExample.java I added these imports:

    import org.apache.thrift.TException;
    import org.apache.thrift.transport.TTransport;
    import org.apache.thrift.transport.TTransportException;
    import org.apache.thrift.transport.TSocket;
    import org.apache.thrift.protocol.TBinaryProtocol;

When I run the server I get these errors:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at org.apache.thrift.transport.TServerSocket.<clinit>(TServerSocket.java:37)
    at example.ServerExample.run(ServerExample.java:14)
    at java.lang.Thread.run(Thread.java:745)
    at example.ServerExample.main(ServerExample.java:25)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 4 more

When I run the client I get these errors:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at org.apache.thrift.transport.TIOStreamTransport.<clinit>(TIOStreamTransport.java:38)
    at example.ClientExample.main(ClientExample.java:15)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 2 more

Just in case, I already added the eclipse thrift plugin. If someone could help me that would be awesome.


Solution

  • Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    

    explains everything I guess.. Just add slf4j dependency