这里的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.jar
和twilio-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.jar
或BuildPath->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
答案 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的错误。
对我有用的解决方案:
在与“libs
”目录相同的级别创建“src
”目录,并将外部jar放入“libs
”目录。 注意:这只是一个很好的做法。理想情况下,您可以为“libs”目录指定任何名称,并将其放在任何您想要的位置。
将“classpath
”属性添加到compile
中的“<ANDROID_SDK>/sdk/tools/ant/uibuild.xml
”目标。
<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