Java 仅给定.class文件的完整路径,如何加载其类对象?
我正在开发一个应用程序,需要能够对Java代码进行一些分析;有的通过文本,有的通过反思。用户应该能够输入一个目录,程序将从中提取所有.java和.class文件。我对.java文件没有问题,但是当我尝试获取.class文件的类时,它不起作用 我已经研究了如何使用带有URL的类加载器。到目前为止我所能找到的给了我这个Java 仅给定.class文件的完整路径,如何加载其类对象?,java,reflection,urlclassloader,Java,Reflection,Urlclassloader,我正在开发一个应用程序,需要能够对Java代码进行一些分析;有的通过文本,有的通过反思。用户应该能够输入一个目录,程序将从中提取所有.java和.class文件。我对.java文件没有问题,但是当我尝试获取.class文件的类时,它不起作用 我已经研究了如何使用带有URL的类加载器。到目前为止我所能找到的给了我这个 URL url = this.openFile().toURI().toURL(); URL[] urls = new URL[]{url}; ClassLoader cl = ne
URL url = this.openFile().toURI().toURL();
URL[] urls = new URL[]{url};
ClassLoader cl = new URLClassLoader(urls);
Class cls = cl.loadClass(this.path);
return cls;
path
只是一个字符串,包含所讨论的.class文件的实际路径,例如Users/me/Documents/Application/out/production/MyPackage/MyClass.class
。从我自己的阅读理解来看,这种方法将我与了解输入的包结构联系在一起,但通常我不知道。我只有.class文件的绝对路径。有没有一种方法,只要使用此路径(或它的一些简单转换),我就可以将实际的MyClass对象加载到我的程序中,并开始对其进行反射?您有两种选择:
MyPackage.MyClass
,但您无法从完全限定的文件名中知道这一点ClassLoader
子类,并调用MyPackage.MyClass
,但您无法从完全限定的文件名中知道这一点ClassLoader
子类,并调用