Java 使用Apache Thrift时出现编译错误

Java 使用Apache Thrift时出现编译错误,java,thrift,Java,Thrift,我试图运行thrift网站上提供的thrift服务器和客户端程序,但我发现以下错误。有人能帮我解决这些错误吗。 编码可在以下内容中找到: 据我们从你的展示中推断,有两件事出了问题: 调用javac似乎有问题,它缺少一个引用Apache Thrift库的类路径。您可以使用-cp参数指定类路径。确保它指向当前目录、Thrift库和您可能正在使用的任何其他库 您的类JavaServer应该在名为JavaServer.java的文件中声明(正如编译器错误所说)。显然,它被称为javaserver.jav

我试图运行thrift网站上提供的thrift服务器和客户端程序,但我发现以下错误。有人能帮我解决这些错误吗。 编码可在以下内容中找到:


据我们从你的展示中推断,有两件事出了问题:

  • 调用
    javac
    似乎有问题,它缺少一个引用Apache Thrift库的类路径。您可以使用
    -cp
    参数指定类路径。确保它指向当前目录、Thrift库和您可能正在使用的任何其他库
  • 您的类
    JavaServer
    应该在名为
    JavaServer.java
    的文件中声明(正如编译器错误所说)。显然,它被称为
    javaserver.java
    ,这是不一样的(至少在非Windows平台上不一样)

  • 官方web教程附带的示例.thrift文件有一些错误(2015年7月,v0.9.x)。 由于样本结构/类等不合理,样本不能用几种语言编译


    官方tar.gz中此文件的版本很好。

    欢迎使用堆栈溢出。请参加会议并再次访问。您的问题不清楚,我们不太擅长调试代码,所以您没有显示。使用该链接为您的问题添加详细信息。您有很多编译错误,一次只能处理一个。我搜索了第一个错误,并查看了我发现的内容:@rene我已经非常清楚地提到了代码所在。请仔细阅读,并试着帮我解决这不是本网站的工作方式。您需要向我们提供一个答案,以便未来的访问者只需验证此问题是否符合他们的情况。他们不应该先去别的地方。在过去的几年里,这里的社区已经意识到这样的非现场链接并不能提供良好的体验。所以我们都有规则要遵循,包括新用户。这本书并非充满了不容忽视的指导。这听起来可能很不友好,也许是这样,但至少有七名成员发现这篇文章不清楚,正如反对票所表明的那样现在它向我显示了28个错误。您能建议我如何检查thrift library for java是否存在吗?您问题中的命令(
    javac javaserver.java
    )没有显示
    -cp
    参数,因此您仍然需要解决第一点。看一看。
    naren@naren:~/Desktop$ javac javaserver.java 
    javaserver.java:16: error: class JavaServer is public, should be declared in a file named JavaServer.java
    public class JavaServer {
           ^
    javaserver.java:1: error: package org.apache.thrift.server does not exist
    import org.apache.thrift.server.TServer;
                                   ^
    javaserver.java:2: error: package org.apache.thrift.server.TServer does not exist
    import org.apache.thrift.server.TServer.Args;
                                           ^
    javaserver.java:3: error: package org.apache.thrift.server does not exist
    import org.apache.thrift.server.TSimpleServer;
                                   ^
    javaserver.java:4: error: package org.apache.thrift.server does not exist
    import org.apache.thrift.server.TThreadPoolServer;
                                   ^
    javaserver.java:5: error: package org.apache.thrift.transport does not exist
    import org.apache.thrift.transport.TSSLTransportFactory;
                                      ^
    javaserver.java:6: error: package org.apache.thrift.transport does not exist
    import org.apache.thrift.transport.TServerSocket;
                                      ^
    javaserver.java:7: error: package org.apache.thrift.transport does not exist
    import org.apache.thrift.transport.TServerTransport;
                                      ^
    javaserver.java:8: error: package org.apache.thrift.transport.TSSLTransportFactory does not exist
    import org.apache.thrift.transport.TSSLTransportFactory.TSSLTransportParameters;
                                                           ^
    javaserver.java:11: error: package tutorial does not exist
    import tutorial.*;
    ^
    javaserver.java:12: error: package shared does not exist
    import shared.*;
    ^
    javaserver.java:18: error: cannot find symbol
      public static CalculatorHandler handler;
                    ^
      symbol:   class CalculatorHandler
      location: class JavaServer
    javaserver.java:20: error: package Calculator does not exist
      public static Calculator.Processor processor;
                              ^
    javaserver.java:45: error: package Calculator does not exist
      public static void simple(Calculator.Processor processor) {
                                          ^
    javaserver.java:58: error: package Calculator does not exist
      public static void secure(Calculator.Processor processor) {
                                          ^
    javaserver.java:24: error: cannot find symbol
          handler = new CalculatorHandler();
                        ^
      symbol:   class CalculatorHandler
      location: class JavaServer
    javaserver.java:25: error: package Calculator does not exist
          processor = new Calculator.Processor(handler);
                                    ^
    javaserver.java:47: error: cannot find symbol
          TServerTransport serverTransport = new TServerSocket(9090);
          ^
      symbol:   class TServerTransport
      location: class JavaServer
    javaserver.java:47: error: cannot find symbol
          TServerTransport serverTransport = new TServerSocket(9090);
                                                 ^
      symbol:   class TServerSocket
      location: class JavaServer
    javaserver.java:48: error: cannot find symbol
          TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
          ^
      symbol:   class TServer
      location: class JavaServer
    javaserver.java:48: error: cannot find symbol
          TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
                               ^
      symbol:   class TSimpleServer
      location: class JavaServer
    javaserver.java:48: error: cannot find symbol
          TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
                                                 ^
      symbol:   class Args
      location: class JavaServer
    javaserver.java:61: error: cannot find symbol
          TSSLTransportParameters params = new TSSLTransportParameters();
          ^
      symbol:   class TSSLTransportParameters
      location: class JavaServer
    javaserver.java:61: error: cannot find symbol
          TSSLTransportParameters params = new TSSLTransportParameters();
                                               ^
      symbol:   class TSSLTransportParameters
      location: class JavaServer
    javaserver.java:65: error: cannot find symbol
          TServerTransport serverTransport = TSSLTransportFactory.getServerSocket(9091, 0, null, params);
          ^
      symbol:   class TServerTransport
      location: class JavaServer
    javaserver.java:65: error: cannot find symbol
          TServerTransport serverTransport = TSSLTransportFactory.getServerSocket(9091, 0, null, params);
                                             ^
      symbol:   variable TSSLTransportFactory
      location: class JavaServer
    javaserver.java:66: error: cannot find symbol
          TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
          ^
      symbol:   class TServer
      location: class JavaServer
    javaserver.java:66: error: cannot find symbol
          TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
                               ^
      symbol:   class TSimpleServer
      location: class JavaServer
    javaserver.java:66: error: cannot find symbol
          TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
                                                 ^
      symbol:   class Args
      location: class JavaServer
    29 errors
    naren@naren:~/Desktop$