2014-02-05 54 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>