java - Eclipse:Tomcat Servlet 中的 Thrift,ClassNotFoundException TException

标签 java eclipse tomcat servlets thrift

我正在尝试制作一个可以进行 Apache Thrift 调用的 Java servlet,但我在启动 servlet 时遇到了问题。

我有一个thrift 客户端,一个用于调用thrift 服务器的Java 类

public class ThriftClient {

    static TTransport transport;
    static TProtocol protocol;
    static MyService.Client client;

    static long xtk_pointer;

    public static void openSocket() throws TException {
        transport = new TSocket("localhost", 9090);
        transport.open();

        protocol = new TBinaryProtocol(transport);
        client = new MyService.Client(protocol);
    }

我有一个 java servlet,它通过 thrift 客户端打开一个套接字

public class MyServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        out.println("Hello World");
    }

    void startThrift(String [] args) {
        try {
            ThriftClient.openSocket();

但是,当我尝试运行这个 servlet(使用 eclipse 和 tomcat 服务器)时,我收到类似

的错误
SEVERE: A child container failed during start

ClassNotFoundException 用于 org.apache.thrift.TException

编辑:我所要做的就是将 thrift jar 包含到 Tomcat 服务器的类路径中。在下面查看我的回答

我已经在没有任何 ClassNotFoundExceptions 的情况下使用了 thrift 客户端,而且 servlet 也可以独立运行。但是,一旦我将 ThriftClient.openSocket(); 添加到 servlet 中,它就会中断,所以我感觉 Thrift 和 Tomcat 正在以某种方式发生冲突。有什么想法吗?

编辑:奇怪的是我从未调用方法 startThrift() 但我仍然收到错误。

最佳答案

虽然您将 thrift jar 包含到您的项目中,但您还必须将它们添加到 Tomcat 库中

首先确保您的外部 jar 在您的项目 Java 构建路径中...

  1. 右键单击您的项目,单击Properties
  2. Deployment Assembly 下,单击 Add...
  3. 双击 Java Build Path Entries... 并选择您要包含的 jar/库

关于java - Eclipse:Tomcat Servlet 中的 Thrift,ClassNotFoundException TException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604723/

相关文章:

java - 调用未 stub 的方法时抛出 RuntimeException

java - Spring 5.x 缺少请求 header "Accept"

java - 如何强制gradle将依赖项添加到模块路径而不是eclipse中的类路径?

java - 基本的 Web 应用程序,但出现 404 错误 Tomcat/Eclipse

tomcat - Grails --- 如何从 Tomcat 获取数据到我的 Grails 应用程序?

java - 相对较大的 TreeMap 的更快序列化

Java HeapDumps 表明在 OutOfMemory 异常后使用的堆大小比实际堆定义小 30%

java - 第 1 行 ' ' x')' 附近的 SQL 语法错误(插入语句)

java - 单元测试 : finding class dependencies

java - 为什么 Ubuntu 中的 tomcat7 无法识别 JAVA_HOME?