我试图从坐在我的桌面目录中的一些编译的类文件加载类对象。加载外部类文件,而不考虑类路径或包
我在我的程序中给主要两个参数喂食,它使用URLClassLoader
从编译文件TheClassToLoad.class
获得一个类的实例。
我,在类装入程序的主:(args[0] is for something unrelated)
String classFile_FilePath = args[1];
String className = args[2];
URL classUrl = new URL(classFile_FilePath);
URLClassLoader ucl = new URLClassLoader(new URL[]{classUrl});
当从shell中运行该程序时在项目目录:
Me:ClassLoadingProgramRootDir Me$ java com.company.Main argZero file:///Users/Me/Desktop/ TheClassToLoad.class
我发现引发异常:
线程“main”中的异常java.la ng.ClassNotFoundException:TheClassToLoad.class
因此,有在Desktop/
文件TheClassToLoad.class
但URLClassLoader
抛出一个异常,而不提供我需要调试的情况的详细信息。
我是Java新手,知道像com.company.Class
这样的类路径经常需要引用基于包目录结构的类的真实类名。然而,在这种情况下,我只是要求URLClassLoader
给我一个位于机器某处的任意编译类文件的类对象实例。
如果您的班级有'包'语句,您在尝试加载和使用时需要尊重它。 – bmargulies