2014-02-05 3 views
0

java에 새 꿀벌이 있습니다. 우분투 12.04 기기를 사용 중입니다.컴파일 오류 발생 : com.twilio.sdk 패키지가 존재하지 않습니다.

자바를 사용하여 uiautomator 테스트 케이스에서 음성 전화를 걸고 https://www.twilio.com/docs/java/install에 제공된 지침에 따라 Twilio API를 사용하려고합니다. http://search.maven.org/#browse|1260284827 (기본 제공)에서 twilio-java-sdk-3.4.2-with-dependencies.jartwilio-java-sdk-3.4.2.jar을 모두 다운로드했습니다.

저는 uiautomator 자바 프로젝트에서 Twilio API를 사용하고 있습니다. 빌드 및 Twilio API 코드를 구현하지 않고 해당 uiautomator Java 프로젝트를 실행할 수 오전. 하지만 Twilio API 라이브러리를 사용하려고하면 패키지를 찾을 수 없다는 컴파일 시간 오류가 발생합니다.

단계 내가 뭘 :

1->> 일식

2에서 자바 프로젝트를 엽니 다 BuildPath->Configure Build Path->Add External JARs를 통해 Twilio 자바 라이브러리 twilio-java-sdk-3.4.2-with-dependencies.jar 또는 twilio-java-sdk-3.4.2.jar를 추가합니다.

TwilioRestClient 개체를 만들 수 있는지 테스트하려면 다음 코드 줄을 사용해야합니다. 나는 다른 테스트 기능을 uiautomator 가지고 있고 코드 의이 부분없이 잘 작동합니다. 다른 시험 방법 외에 다음 방법을 고려하십시오.

나는 comiple/build 명령 앞에 내 코드에 대한 참조 오류를 얻을하지 않습니다

//Assume all other required libraries are imported 
import com.twilio.sdk.TwilioRestClient; 

public class testClient extends UiAutomatorTestCase { 

    public void testMethodGetClient(){ 
     try{ 
      TwilioRestClient client = new TwilioRestClient("ACCOUNT_SID", "AUTH_TOKEN"); 
      log.info("client: " + client.getAccountSid()); 
     }catch(Exception e){ 
      log.info(e.toString()); 
     } 
    } 
} 

test.java. 내가 client. 할 경우 일식이 나를 client 개체에 사용할 수있는 모든 방법을 보여줍니다. 그래서, 여기서 수입이 성공적이라고 가정 할 수 있습니까? 은 그 때 나는 터미널을 가서 build.xml 파일을 생성하는 명령 아래 실행합니다

우분투 터미널

$> android create uitest-project -n JARNAME -t 1 -p <PATH-TO-PROJECT> 
$> ant clean build 
Buildfile: <PATH-TO-PROJECT>/build.xml 

-check-env: 
[checkenv] Android SDK Tools Revision 22.3.0 
[checkenv] Installed at <ANDROID-SDK-PATH> 

-pre-clean: 

clean: 
    [delete] Deleting directory <PATH-TO-PROJECT>/bin 

-check-env: 
[checkenv] Android SDK Tools Revision 22.3.0 
[checkenv] Installed at <ANDROID-SDK-PATH> 

-build-setup: 
[getbuildtools] Using latest Build Tools: 19.0.0 
    [echo] Resolving Build Target for <PACKAGE-NAME>... 
[getuitarget] Project Target: Android 4.2.2 
[getuitarget] API level:  17 
    [echo] ---------- 
    [echo] Creating output directories if needed... 
    [mkdir] Created dir: <PATH-TO-PROJECT>/bin 
    [mkdir] Created dir: /<PATH-TO-PROJECT>/bin/classes 

-pre-compile: 

compile: 
    [javac] Compiling 33 source files to <PATH-TO-PROJECT>/bin/classes 
    [javac] <PATH-TO-PROJECT>/test.java:15: package com.twilio.sdk does not exist 
    [javac] import com.twilio.sdk.TwilioRestClient; 
    [javac]     ^
[javac] <PATH-TO-PROJECT>/test.java:42: cannot find symbol 
[javac] symbol : class TwilioRestClient 
[javac] location: class <packagename>.Telephony 
[javac]    TwilioRestClient client = new TwilioRestClient("ACCOUNT_SID", "AUTH_TOKEN"); 
[javac]   ^
[javac] <PATH-TO-PROJECT>/test.java:42: cannot find symbol 
[javac] symbol : class TwilioRestClient 
[javac] location: class <packagename>.Telephony 
[javac]    TwilioRestClient client = new TwilioRestClient("ACCOUNT_SID", "AUTH_TOKEN"); 
[javac]           ^
    [javac] 3 errors 

BUILD FAILED 
<ANDROID-SDK-PATH>/tools/ant/uibuild.xml:183: Compile failed; see the compiler error output for details. 

Total time: 1 second 

나는 testMethodGetClient 방법을 가지고 있지 않은 경우 위의 명령은 .JAR을 만들 것입니다. 그래서, 나는 package not found 오류에 대한 articals를 찾았지 만, 대부분은 'Add External Jars'또는 'class path 제공'을 통해 라이브러리를 추가 할 것을 제안했습니다. 나는 둘 다 시도하고 동일한 오류가 발생합니다. 그래서 나는 여기에 와서 새로운 질문으로 게시했습니다.

도움을 주시면 대단히 감사하겠습니다.

감사합니다,

답변

2

bgossit 님의 답변은 올바른 방향으로 가고 있습니다. 그러나, 그것만으로는 충분하지 않았습니다. 그래서, 저의 질문에 대답하면서 제가해야만하는 약간의 단계를 설명했습니다.

첫 번째 병 목이 해결되었으므로 프로젝트를 성공적으로 컴파일 할 수 있습니다. 그러나 여전히 Android 기기에서 프로젝트를 실행할 수 없습니다. 이 질문을 complie 오류에 대한 대답으로이 주석을 표시합니다. 나는 런타임 오류에 대한 새로운 질문을 던지고있다.

uiautomator의 'android create project'명령은 내부적으로 '<ANDROID_SDK>/sdk/tools/ant/uibuild.xml'을 호출하여 최종 병을 생성하는 'build.xml'을 생성합니다. 기본적으로이 'uibuild.xml'의 'compile'대상에는 병에 대해 'classpath'이 표시되지 않습니다. 이것은 다른 StackOverflow 질문/답변의 몇 가지에 언급 된 안드로이드 버그입니다. 나를 위해 일한

솔루션 :

  1. 이 'src'디렉토리와 같은 레벨에있는 'libs'디렉토리를 만들고 'libs'디렉토리에 외부 항아리를 넣어. 참고 : 이것은 좋은 습관입니다. 이상적으로는 'libs'디렉토리에 아무 이름이나 붙여 넣을 수 있습니다.

  2. 'compile'대상에 <ANDROID_SDK>/sdk/tools/ant/uibuild.xml의 'classpath'특성을 추가하십시오.

<classpath> 
    <fileset dir="${jar.libs.dir}" includes="*.jar" /> <!-- path to 'libs' --> 
</classpath> 

참고 사항 :를 솔루션 위의 내 프로젝트를 컴파일하고 구축하기 위해 노력,하지만, 안드로이드 장치가 Twilio의 API 병이없는 것처럼 내가 여전히 안드로이드 장치에서 실행 할 수 아니에요 . Twilio jar/classes로 최종 프로젝트 병을 만드는 방법을 찾고 있습니다. java.lang.ClassNotFoundException for package com.twilio.sdk

감사합니다,

Rumit

2

Rumit 타사 항아리의 기본 위치는 일반적으로 프로젝트의 기지에서 libs 폴더, 즉 <PATH-TO-PROJECT>입니다.

관련 문제