Android не может найти класс из внешней банки - PullRequest
13 голосов
/ 22 ноября 2011

Я пытаюсь создать простое тестовое приложение, которое в основном расширяет учебное приложение для 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.

Ответы [ 2 ]

21 голосов
/ 22 ноября 2011

Нет необходимости строить внешний сосуд. Попробуйте удалить его из пути сборки и выполните следующие действия:

  1. Создайте папку в корневом каталоге вашего проекта Android под названием libs.
  2. Добавьте банку в эту папку.
  3. Щелкните правой кнопкой мыши по банке и нажмите, чтобы добавить путь к сборке.
  4. Очистите ваш проект и попробуйте снова.
1 голос
/ 05 апреля 2013

я.Сгенерируйте Jar для ваших внешних классов

ii.Скопируйте в папку Libs вашего проекта Android

iii.Откройте Eclipse-> щелкните правой кнопкой мыши Jar-> Add To Build Path.

iv.Очистить проект и запустить приложение.

...