Android не может найти класс из внешней банки
Я пытаюсь создать простое тестовое приложение, которое в основном расширяет учебное приложение Android Hello World, вызывая некоторые простые функции из внешнего JAR-файла. Однако, когда я запускаю приложение, оно не может найти класс из JAR. Что я делаю неправильно?
Вот весь источник JAR:
package com.mytests.pow;
public class power2 {
private double d;
public power2()
{
d = 0.0;
}
public String stp2(double dd)
{
d = dd*dd;
return String.format("%e", d);
}
}
А вот источник "Hello World ++":
package com.myLuceneTests.namespace;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import com.mytests.pow.*;
public class AndroidSimpleSIH_EclipseActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
power2 pp = new power2();
String iout = pp.stp2(12.0);
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(iout);
setContentView(tv);
}
}
Когда я запускаю приложение, я получаю это в logcat:
11-22 12:24:52.697 2963 2963 E dalvikvm: Could not find class 'com.mytests.pow.power2', referenced from method com.myLuceneTests.namespace
.AndroidSimpleSIH_EclipseActivity.onCreate
а потом
11-22 12:24:52.713 2963 2963 E AndroidRuntime: java.lang.NoClassDefFoundError: com.mytests.pow.power2
Что я делаю неправильно? Спасибо!
Кстати, моя настоящая цель - использовать реальный JAR (а не этот игрушечный) в приложении для Android. Возможно, у меня есть доступ к коду для этого JAR-файла, и я могу его перестроить, но это большой кусок кода Java, и я могу столкнуться с проблемами при его перестроении, поэтому я пытаюсь использовать предварительно созданный JAR-файл.
3 ответа
Там нет необходимости строить внешний сосуд. Попробуйте удалить его из пути сборки и выполните следующие действия:
- Создайте папку в корне вашего проекта Android под названием
libs
, - Добавьте банку в эту папку.
- Щелкните правой кнопкой мыши по банке и нажмите, чтобы добавить путь сборки.
- Очистите ваш проект и попробуйте снова.
Я. Создать Jar для ваших внешних классов
II. Скопируйте в папку Libs вашего проекта Android
III. Откройте Eclipse-> щелкните правой кнопкой мыши Jar->Add To Build Path.
внутривенно Очистить проект и запустить приложение.
Еще одна вещь, которую вы можете попробовать, — это использовать API против реализации/компиляции. API внесет транзитивные зависимости из jar.