![](/img/trans.png)
[英]In java is there a way to tell on which physical computer a file resides?
[英]How to access java file which resides inside SDCard in Android
我正在尝试使用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应用程序动态提供一些“配置”信息。 然后,让该应用读取包含键/值对的属性文件。 (几乎)照常营业; 而不需要将类文件加载到任意位置。
您可以嵌入beanshell,加载Java文件,实例并执行任何操作。
从sd像访问其他任何普通文件一样访问java文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.