我一直在尝试在我的网站上托管的jar文件中调用方法的类。 jar文件确实存在,并且在普通的Java中成功地称为remotelly。
我在Android中调用了它的ClassNotFoundException异常:
...
@Override
protected String doInBackground(String... credenciais) {
String dexDirectory = context.getDir("dex", 0).getAbsolutePath();
ClassLoader parent = getClass().getClassLoader();
DexClassLoader loader = new DexClassLoader("https://www.mywebsite.com/file.jar!/", dexDirectory, null, parent);
Class c = null;
try {
c = loader.loadClass("package.ClassName");
Object o = c.newInstance();
Method m = c.getMethod("func");
m.invoke(o);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return "";
}
...
堆栈:
10-13 12:05:40.937 6182-6206/com.company.project W/System.err﹕ java.lang.ClassNotFoundException: package.ClassName
10-13 12:05:40.945 6182-6206/com.company.project W/System.err﹕ at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
...