使用 Eclipse NoClassDefFoundError 节俭 server/client

Thrift server/client with Eclipse NoClassDefFoundError

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

我是按照这个教程一步一步来的,直到他们执行客户端和服务器的部分。对于 serverExample.java 我添加了这些导入。

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

对于 clientExample.java 我添加了这些导入:

    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;

当我 运行 服务器出现这些错误时:

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.run(URLClassLoader.java:366)
    at java.net.URLClassLoader.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

当我 运行 客户端出现这些错误时:

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.run(URLClassLoader.java:366)
    at java.net.URLClassLoader.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

以防万一,我已经添加了 eclipse thrift 插件。如果有人能帮助我,那就太棒了。

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

解释了我猜测的一切..只需添加 slf4j 依赖项

您缺少 slf4j.jar 库或库不在 class 路径中。

从 maven 下载最新的 jar 并将其更新到您的 class 路径

添加库没有解决问题。我重新安装了 Linux、Thrift 和 Eclipse,它解决了。感谢您的回答!