簡體   English   中英

包org.apache.thrift不存在

[英]package org.apache.thrift does not exist

我正在嘗試編寫一個使用thrift的基本java應用程序。 我缺少的是一個工作jar文件。

我從官方網站下載頁面下載了0.8.0 gz版本的thrift,並自己創建了jar存檔( jar cf thrift-0.8.0.jar src/org )。 我已將新的jar文件移動到我的項目目錄中。 然后,我手動將這個jar文件添加到項目中 - 我在NetBeans IDE中工作。 一切似乎應該工作,但它沒有 - 紅色錯誤消息發生在我想要使用thrift libs的任何地方。 這是我的代碼:

package com.blogspot.symfonyworld.thrift;

import com.blogspot.symfonyworld.thrift.server.MainService;
import org.apache.thrift.TException;

public class MainServiceHandler implements MainService.Iface {

  @Override
    public int add(int n1, int n2) throws TException {
        return n1 + n2;
    }

    @Override
    public int sub(int n1, int n2) throws TException {
        return n1 + n2;
    }

}

和另一個文件:

/**
 * Autogenerated by Thrift Compiler (0.8.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package com.blogspot.symfonyworld.thrift.server;

import org.apache.thrift.scheme.IScheme;
import org.apache.thrift.scheme.SchemeFactory;
import org.apache.thrift.scheme.StandardScheme;

import org.apache.thrift.scheme.TupleScheme;
import org.apache.thrift.protocol.TTupleProtocol;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.EnumMap;
import java.util.Set;
import java.util.HashSet;
import java.util.EnumSet;
import java.util.Collections;
import java.util.BitSet;
import java.nio.ByteBuffer;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MainService {

  public interface Iface {

    public int add(int n1, int n2) throws org.apache.thrift.TException;

    public int sub(int n1, int n2) throws org.apache.thrift.TException;

  }

  public interface AsyncIface {

    public void add(int n1, int n2, org.apache.thrift.async.AsyncMethodCallback<AsyncClient.add_call> resultHandler) throws org.apache.thrift.TException;

    public void sub(int n1, int n2, org.apache.thrift.async.AsyncMethodCallback<AsyncClient.sub_call> resultHandler) throws org.apache.thrift.TException;

  }

當我運行構建時,我得到以下錯誤:

ant -f /var/www/laughing-thrift-duck jar
init:
Deleting: /var/www/laughing-thrift-duck/build/built-jar.properties
deps-jar:
Updating property file: /var/www/laughing-thrift-duck/build/built-jar.properties
Compiling 2 source files to /var/www/laughing-thrift-duck/build/classes
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/MainServiceHandler.java:4: package org.apache.thrift does not exist
import org.apache.thrift.TException;
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/server/MainService.java:9: package org.apache.thrift.scheme does not exist
import org.apache.thrift.scheme.IScheme;
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/server/MainService.java:10: package org.apache.thrift.scheme does not exist
import org.apache.thrift.scheme.SchemeFactory;
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/server/MainService.java:11: package org.apache.thrift.scheme does not exist
import org.apache.thrift.scheme.StandardScheme;
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/server/MainService.java:13: package org.apache.thrift.scheme does not exist
import org.apache.thrift.scheme.TupleScheme;
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/server/MainService.java:14: package org.apache.thrift.protocol does not exist
import org.apache.thrift.protocol.TTupleProtocol;
# and many many more...

主要問題是: 包org.apache.thrift不存在 - 怎么來的?!

有人能指出我在將自定義jar導入項目時遇到了什么問題嗎? 我認為這與節儉沒有任何關系,但總的來說是進口罐子。

我從官方網站下載頁面下載了0.8.0 gz版本的thrift,並自己創建了jar存檔(jar cf thrift-0.8.0.jar src / org)

你為什么要創建自己的罐子? 為什么用源文件創建它? jar庫必須至少包含准備使用的字節碼類。

你必須讓thrift將自己編譯成jar然后使用它:

  • 瀏覽到/lib/java
  • 在終端運行ant
  • 檢查build文件夾,你會看到一個.jar
  • 用那個

當您使用命令jar cf thrift-0.8.0.jar src/org創建jar文件時,org包的類(及其下面)存儲在src / org而不是org中,因此Java不能找到它。 嘗試使用此命令代替jar cf thrift-0.8.0.jar -C src org ,它應該產生正確的結構。

您可以通過運行jar tf thrift-0.8.0.jar來驗證它並查看內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM