[英]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.