出现编译错误:包com.twilio.sdk不存在

时间:2014-02-05 20:49:27

标签: java android eclipse ant twilio

这里的java中的新蜜蜂。 我在ubuntu 12.04机器上。

我正在尝试使用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中打开java项目

2→通过twilio-java-sdk-3.4.2-with-dependencies.jar添加Twilio java库twilio-java-sdk-3.4.2.jarBuildPath->Configure Build Path->Add External JARs

我有以下代码行来测试我是否可以创建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.,eclipse会向我展示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

如果我没有testMethodGetClient方法,上面的命令会创建.jar。因此,我为package not found错误的文章进行了分析,但大多数人建议通过“添加外部Jars”来添加库。或者&#39;提供课程路径&#39;。我试过两个,我得到了同样的错误。所以,我来到这里并将其作为一个新问题发布。

非常感谢任何帮助。

此致 Rumit

2 个答案:

答案 0 :(得分:2)

第三方广告的默认位置通常是项目底部的libs文件夹,即<PATH-TO-PROJECT>

答案 1 :(得分:2)

bgossit的回答确实帮助我走向了正确的方向。然而,仅凭这一点还不够。所以,我自己回答我的问题,解释我必须做的一些额外步骤。

我的第一个瓶颈已经解决,即成功编译项目。但是,我仍然无法在Android设备上运行该项目。我将此评论标记为答案,因为问题是编译错误。我正在为运行时错误提出一个新问题。

我发现uiautomator的'android create project'命令会创建一个'build.xml',内部调用'<ANDROID_SDK>/sdk/tools/ant/uibuild.xml'来构建项目并创建最终的jar。默认情况下,此“compile”中的“uibuild.xml”目标没有包含“classpath”。这似乎是在其他几个StackOverflow问题/答案中提到的Android的错误。

对我有用的解决方案:

  1. 在与“libs”目录相同的级别创建“src”目录,并将外部jar放入“libs”目录。 注意:这只是一个很好的做法。理想情况下,您可以为“libs”目录指定任何名称,并将其放在任何您想要的位置。

  2. 将“classpath”属性添加到compile中的“<ANDROID_SDK>/sdk/tools/ant/uibuild.xml”目标。

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