我是eclipse插件开发的新手,我继承了一些Eclipse插件代码,我试图弄清楚如何做一些相对简单的事情。
简而言之,右键单击项目中的Java类,向导将打开,所选Java类的完全限定类名将显示在文本字段中。当您单击“下一步”时,代码会尝试执行CClass.forName(s)
,其中s是类名。
问题是,Class.forName
抛出了一个未找到类的异常,我假设因为eclipse项目中的Java类实际上并不在向导的类路径中。
有人能指出我正确的方向吗?我如何确保向导可以看到eclipse项目中的类,类路径?
答案 0 :(得分:1)
您不能使用Class.forName()。插件操作的Java项目中的java类甚至与插件不在同一个进程中,更不用说加载到任何类加载器了。
您应该查看JDT的Java Model或Java AST API,以创建一个在Java项目中对Java文件进行操作的插件。
答案 1 :(得分:1)
每个插件都由不同的类加载器加载。但是,有一些方法可以从其他插件加载类。阅读这些将有助于
http://www.eclipsezone.com/articles/eclipse-vms/
http://wiki.eclipse.org/index.php/Context_Class_Loader_Enhancements
答案 2 :(得分:0)
首先必须在选定的java项目中获取类加载器,然后使用类加载器加载类。 Java项目的类加载器与eclipse插件中的类加载器不同。请参阅以下链接中的详细代码:https://sdqweb.ipd.kit.edu/wiki/JDT_Tutorial:_Class_Loading_in_a_running_plugin
链接上的代码将教您如何获取所选项目的类加载器。