gpt4 book ai didi

java - 如何访问驻留在 Android 中 SDCard 中的 java 文件

转载 作者:搜寻专家 更新时间:2023-11-01 08:26:45 25 4
gpt4 key购买 nike

我正在尝试使用 URLClassLoader 类将 Java 文件加载到我的 android 项目。

但是当我运行下面的代码时,我得到了一个ClassNotFoundError:

package com.xyz.abc;
public class ConstantClassReader
{
public void readFile() throws MalformedURLException
{
String url = "file://"+Environment.getExternalStorageDirectory().getPath()+"/StringConstants.class";
URLClassLoader urlClassLoader = URLClassLoader.newInstance(new URL[]{new URL(url)});
Class simpleClass = null;
try {
simpleClass = urlClassLoader.loadClass("com.xyz.abc.StringConstants");
Constructor simpleConstructor = simpleClass.getConstructor();
Object simpleClassObj = simpleConstructor.newInstance();
Method method = simpleClass.getMethod("myMethod");
method.invoke(simpleClassObj);
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
e.printStackTrace();
}
}
}

下面的 Java 文件位于我的 SDCard 中:

package com.xyz.abc;
public class StringConstants{
public void myMethod(){
System.out.println("myMethod Loaded");
}
}

最佳答案

类加载器加载

将 Java 源文件放在某处是不行的。

你必须编译那个文件;并且也许那时你很幸运。但如果 Android JVM 允许您从任意位置加载类,我会感到很惊讶。这尖叫着:到处都是“安全问题”。

鉴于您的要求,我会建议一个不同的解决方案,在普通 Java 属性之上。含义:您似乎只是想动态地向您的 Java 应用程序提供一些“配置”信息。然后让该应用程序读取包含键/值对的属性文件。那(几乎)照常营业;并且不会导致需要在任意位置加载类文件。

关于java - 如何访问驻留在 Android 中 SDCard 中的 java 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44255200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com