2013-03-15 4 views
3

저주를 사용하는 기본 Java 응용 프로그램을 작성하려고합니다. 제가 놓친 것은 작동하는 jar 파일입니다.org.apache.thrift 패키지가 존재하지 않습니다.

저는 공식 웹 사이트 다운로드 페이지에서 0.8.0 gz 버전의 중고품을 다운로드했으며 자체적으로 jar 아카이브를 만들었습니다 (jar cf thrift-0.8.0.jar src/org). 새 jar 파일을 프로젝트 디렉토리로 옮겼습니다. 그런 다음이 jar 파일을 프로젝트에 수동으로 추가했습니다. NetBeans IDE에서 작업하고 있습니다. 모든 것이 제대로 작동하는 것처럼 보이지만 그렇지 않습니다. 빨간색 오류 메시지는 중고품 라이브러리를 사용하려는 모든 곳에서 발생합니다.

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; 
    } 

} 

다른 파일 :

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... 

주요 질문은 다음과 같습니다 : 패키지 내가 빌드를 실행하면

/** 
* 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; 

    } 

, 나는 다음과 같은 오류를 얻을이 내 코드의 조각 org.apache.thrift가 존재하지 않습니다. - 어떻게 오셨습니까?!

내 프로젝트에 사용자 정의 jar 파일을 가져 오는 데 내가 잘못한 점을 누군가가 지적 할 수 있습니까? 나는 이것이 조롱과 정확히 관련이 없다고 생각하지만 일반적으로 병을 수입하는 것으로 생각합니다.

+0

Apache Thrift를 다운로드하고 classpath에 항아리를 넣으십시오. 웹 어플리케이션이라면'WEB-INF/lib' 폴더에 넣으십시오. –

답변

7

나는 공식 웹 사이트 다운로드 페이지에서 절약의 0.8.0 GZ 버전을 다운로드하고 내 자신의 (항아리 CF 절약-0.8.0.jar SRC/조직)

에 항아리 아카이브를 생성 한

왜 당신은 자신의 항아리를 만들었습니까? 왜 소스 파일로 만들었습니까? jar 라이브러리에는 적어도 바이트 코드 클래스가 있어야하며 사용할 준비가되어 있습니다.

당신은 중고품이 그것을 사용 후 항아리에 자신을 컴파일 할 수 있어야합니다

  • 찾아 빌드 폴더 터미널
  • 검사에서 실행 ant
  • /lib/java에 당신은 .jar
  • 를 볼 수 있습니다 그 중 하나를 사용하십시오
+0

이것은 정확히 내가 필요로했던 것입니다. 감사합니다. – ducin

0

명령을 사용할 때 jar 파일을 만들기 위해을 사용하면 org 패키지 (및 그 아래)의 클래스가 org 대신 src/org에 저장되므로 Java가 찾을 수 없습니다. 이 명령 대신 올바른 구조를 생성해야하는 jar cf thrift-0.8.0.jar -C src org을 사용해보십시오.

jar tf thrift-0.8.0.jar을 실행하고 내용을 확인하여 확인할 수 있습니다.

관련 문제