Ошибка компиляции: пакет com.twilio.sdk не существует

New-bee на java здесь. Я нахожусь на машине с Ubuntu 12.04.

Я пробую Twilio API, используя java для голосовых вызовов из тестового примера uiautomator, и следую инструкциям, представленным на https://www.twilio.com/docs/java/install. Я загрузил и twilio-java-sdk-3.4.2-with-dependencies.jar, и twilio-java-sdk-3.4.2.jar с http://search.maven.org/#browse|1260284827 (предварительно построенный).

Я использую Twilio API в java-проекте uiautomator. Я могу создать и запустить этот java-проект uiautomator без реализации кода API Twilio. Но если я попытаюсь использовать библиотеку Twilio API, я получаю сообщение об ошибке времени компиляции, что не удалось найти пакет.

Шаги, которые я делаю:

1-> Откройте проект Java в eclipse

2-> Добавьте java-библиотеку Twilio twilio-java-sdk-3.4.2-with-dependencies.jar ИЛИ 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

Приведенная выше команда создала бы .jar, если бы у меня не было метода testMethodGetClient. Итак, я искал статьи на предмет package not found ошибок, но большинство из них предлагало добавить библиотеку либо через «Добавить внешние банки», либо «указать путь к классу». Я попробовал оба, и у меня такая же ошибка. Итак, я пришел сюда и разместил это как новый вопрос.

Любая помощь приветствуется.

С уважением, Румит


person rumit patel    schedule 05.02.2014    source источник


Ответы (2)


Расположение по умолчанию для сторонних jar-файлов обычно - это папка libs в основе вашего проекта, то есть <PATH-TO-PROJECT>.

person bgossit    schedule 06.02.2014

Ответ bgossit помог мне двигаться в правильном направлении. Однако одного этого было недостаточно. Итак, отвечая на мой вопрос, я объяснил небольшой дополнительный шаг, который мне нужно было сделать.

Моя первая проблема устранена, то есть успешно скомпилировать проект. Однако я все еще не могу запустить проект на устройстве Android. Я отмечаю этот комментарий как ответ, так как вопрос был связан с ошибкой. Я задаю новый вопрос об ошибке времени выполнения.

Я обнаружил, что команда uiautomator 'android create project' создает 'build.xml', который внутренне вызывает '<ANDROID_SDK>/sdk/tools/ant/uibuild.xml' для сборки проекта и создания последней банки. По умолчанию цель 'compile' в этом 'uibuild.xml' не содержит 'classpath' для банки. Похоже, это ошибка Android, о которой упоминалось в нескольких других вопросах / ответах StackOverflow.

Решение, которое сработало для меня:

  1. Создайте каталог «libs» на том же уровне, что и каталог «src», и поместите внешние файлы jar-файлов в каталог «libs». Примечание. Это просто хорошая практика. В идеале вы можете присвоить каталогу libs любое имя и поместить его в любое место.

  2. Добавьте атрибут «classpath» к цели «compile» в <ANDROID_SDK>/sdk/tools/ant/uibuild.xml.

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

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: хотя приведенное выше решение сработало для компиляции и сборки моего проекта, я все еще не могу запустить его на устройстве Android, поскольку на устройстве Android не будет jar-файла Twilio API. Я ищу способы собрать финальную банку проекта с помощью Twilio jar / classes. java.lang.ClassNotFoundException для пакета com.twilio.sdk

С уважением,

Румит

person rumit patel    schedule 11.02.2014