Имеется простая библиотека .jar, в ней один класс com.example.myclass:
package com.example;
public class myclass
{
public int Summ(int a, int b)
{
return a + b;
}
}
и манифест:
Manifest-Version: 1.0
Main-Class: com.example.myclass
Из своего приложения для Android я пытаюсь вызвать функцию "summ" следующим кодом:
String dexPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath() + "/lib.jar";
String dexOutputDir = getApplicationInfo().dataDir;
DexClassLoader pathClassLoader = new DexClassLoader(dexPath, dexOutputDir, null, this
.getClass().getClassLoader());
try {
Class<?> class1 = pathClassLoader.loadClass("com.example.myclass");
Object object = class1.newInstance();
Class[] params = new Class[2];
params[0] = Integer.TYPE;
params[1] = Integer.TYPE;
Method action = class1.getMethod("Summ", params);
Integer ret = (Integer) action.invoke(object, 12, 13);
tv.setText("method : " + action.getName() + ", return :" + ret);
} catch (Exception e) {
tv.setText("error : " + e.getMessage());
}
Но возникает ошибка "Didn't find class".
Подскажите, пожалуйста, может у меня неправильная структура jar файла или я неверно вызываю метод.