我有一个Eclipse项目(MainProject),它引用了另一个Eclipse项目(ReferencedProject)。 MainProject还引用了一个JAR文件(ReferencedJar)。这个ReferencedJar的文件名是已知的。我也知道ReferencedJar中有一个类(ReferencedClass),但我不知道ReferencedClass是什么包,因为事先不知道包路径。
我需要使用反射在ReferencedProject中实例化ReferencedClass。我怎样才能做到这一点?当项目打包到Eclipse之外的独立jar时,解决方案是否可行?
这个问题的原因是; ReferencedJar是由建模器应用程序生成的文件。它为您的模型生成java类,并将它们放入ReferencedJar中。用户可以选择将生成的类放入哪个包中。但是类名总是一样的。 MainProject是包含这个生成的jar的项目,但是ReferencedProject(一个框架)也需要在这个生成的jar中实例化一个类。希望这会使问题更加明确。
提前致谢
编辑:其实我有一个想法,但不知道如何实现它。因为我知道ReferencedJar文件的名称,所以我可以在运行时访问它并检查它包含的所有类。然后我可以通过名称比较找到匹配的类。但是如何在运行时访问ReferencedJar?
答案 0 :(得分:1)
如果您不知道其包
,则无法实例化您的课程答案 1 :(得分:1)
只要您需要的类位于类路径中,您就可以通过调用Class.forName(String className)
来获取对它的引用
String className = "WhatEver";
String packageName = "some.package";
Class<?> c = Class.forName(packageName + "." + className);
但是,如果您不知道软件包名称,并且无法从配置文件中获取软件包名称,我建议使用reflections之类的库来扫描类路径并找到相关的班级。