2014-02-05 73 views
0

java中的新蜜蜂在這裏。 我在一臺Ubuntu 12.04機器上。編譯錯誤:package com.twilio.sdk不存在

我正在嘗試使用java的Twilio API從uiautomator測試用例發出語音呼叫,並按照https://www.twilio.com/docs/java/install提供的說明進行操作。我從http://search.maven.org/#browse|1260284827(預建)下載了twilio-java-sdk-3.4.2-with-dependencies.jartwilio-java-sdk-3.4.2.jar

我在uiautomator java項目中使用Twilio API。我能夠構建並運行uiautomator java項目,而無需實現Twilio API代碼。但是,如果我嘗試使用Twilio API庫,我會得到一個編譯時錯誤,它找不到包

步驟我做:

1->在eclipse

2-打開Java項目>通過BuildPath->Configure Build Path->Add External JARs添加Twilio Java庫twilio-java-sdk-3.4.2-with-dependencies.jar OR twilio-java-sdk-3.4.2.jar

我有以下代碼行來測試我是否可以製作TwilioRestClient對象。我有其他的測試功能與uiautomator,他們工作正常,沒有這段代碼。除了其他測試方法外,還應考慮以下方法。

test.java

//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()); 
     } 
    } 
} 

我沒有在comiple/build命令之前得到我的代碼中的任何引用錯誤。要相信,如果我做client.,日食向我展示了所有可用於client對象的方法。那麼,我可以在這裏假設我的進口是成功的嗎? 後來我去了終端並執行下面的命令來創建build.xml文件:

Ubuntu的終端

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

上面的命令將創建的.jar,如果我沒有足夠的testMethodGetClient方法。所以,我爲文章尋找package not found錯誤,但其中大多數人建議通過「添加外部罐子」或「提供類路徑」來添加庫。我嘗試了兩個,我得到了同樣的錯誤。所以,我來到這裏並將其作爲一個新問題發佈。

任何幫助,非常感謝。

問候, Rumit

回答

2

bgossit的回答確實幫助我走向了正確的方向。但是,僅此一點還不夠。所以,我自己回答我的問題,解釋了我必須做的一些額外的步驟。

我的第一個瓶頸就解決了,那就是成功編譯項目。但是,我仍然無法在Android設備上運行該項目。我將這個評論標記爲答案,因爲問題在於編譯錯誤。我對運行時錯誤提出了一個新問題。

我發現uiautomator的「android create project」命令創建一個「build.xml」,這在內部調用「<ANDROID_SDK>/sdk/tools/ant/uibuild.xml」建設項目,並創建最終的罐子。默認情況下,此'uibuild.xml'中的'compile'目標沒有包含該罐子的'classpath'。這似乎是Android上的其他一些StackOverflow問題/答案中提到的錯誤。

解決方案,爲我工作:

  1. 在同一水平作爲你的「src」目錄中創建「libs」目錄,並把你的外部罐成「libs」目錄。 備註:這只是一個很好的做法。理想情況下,您可以給'libs'目錄命名並將其放在任何你想要的地方。

  2. 將'classpath'屬性添加到<ANDROID_SDK>/sdk/tools/ant/uibuild.xml中的'compile'目標。

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

請注意:雖然,上述解決方案工作於編譯和構建我的項目,我仍然無法在Android設備上運行的Android設備不會有Twilio API JAR 。我正在尋找使用Twilio jar/classes來構建最終項目jar的方法。 java.lang.ClassNotFoundException for package com.twilio.sdk

問候,

Rumit

2

第三方jar文件的默認位置通常是在項目的基地libs文件夾,即<PATH-TO-PROJECT>