Eclipse插件 - 添加eclipse本身使用的jar

时间:2015-12-25 13:01:46

标签: java eclipse plugins jar

我正在尝试使用Eclipse编写Eclipse-Plugin。该插件使用org.eclipse.jdt.core。 在我的代码中的某个时刻,我从菜单操作处理程序中获取了CompilcationUnit的对象,我想找到使用我的插件点击的java文件路径。

首先,在获取#34; CompilcationUnit"类型的对象的行上,我得到了NoClassDefFoundError(我引用了我的eclipse / plugins文件夹中的org.eclipse.jdt.core.jar)。 这个帖子解决了这个问题: Eclipse plugin: java.lang.NoClassDefFoundError

类似的解决方案发现: Java eclipse : Importing jar file in eclipse plugin project

现在,我有一个不同的错误。我试图验证该元素是否为CompilationUnit类型,然后使用它。 我写了以下代码:

System.out.println(element.getClass());
System.out.println(org.eclipse.jdt.internal.core.CompilationUnit.class);

System.out.println(element instanceof org.eclipse.jdt.internal.core.CompilationUnit);

System.out.println(element.getClass().getPackage());
System.out.println(org.eclipse.jdt.internal.core.CompilationUnit.class.getPackage());

System.out.println(element.getClass().getProtectionDomain().getCodeSource().getLocation());
System.out.println(org.eclipse.jdt.internal.core.CompilationUnit.class.getProtectionDomain().getCodeSource().getLocation());

org.eclipse.jdt.internal.core.CompilationUnit cu = (org.eclipse.jdt.internal.core.CompilationUnit)element;

输出是这样的:

  

class org.eclipse.jdt.internal.core.CompilationUnit

     

class org.eclipse.jdt.internal.core.CompilationUnit

     

     

包org.eclipse.jdt.internal.core

     

包org.eclipse.jdt.internal.core

     

file:/ C:/ Program Files / Eclipse / plugins / org.eclipse.jdt.core_3.11.1.v20150902-1521.jar

     

文件:/ d:/Svn/OrderingTR/Source/ClassMethodsRearranger/external/org.eclipse.jdt.core_3.11.1.v20150902-1521.jar

然后我得到一个例外:

org.eclipse.e4.core.di.InjectionException: java.lang.ClassCastException: org.eclipse.jdt.internal.core.CompilationUnit cannot be cast to org.eclipse.jdt.internal.core.CompilationUnit

我不明白这一点。看起来元素与我的代码引用的类型相同。只有我的代码引用了ile中的类型:/ D:/Svn/OrderingTR/Source/ClassMethodsRearranger/external/org.eclipse.jdt.core_3.11.1.v20150902-1521.jar

并且该元素与同一jar的类型相同,仅位于文件中:/ C:/ Program Files / Eclipse / plugins / org.eclipse.jdt.core_3.11.1.v20150902-1521.jar。

现在,我需要在D:/ Svn / ...中引用该文件,因为这是项目的jar,eclipse插件需要它(否则我之前解决了NoClassDefFoundError)。 但是我无法使用菜单操作处理程序中获得的元素(我相信它起源于不同的jar文件)。我需要使用那个元素。 我能做什么?有人遇到过这种问题吗?我搜索并搜索了一下,并没有发现任何关于这个问题......看来这是eclipse插件和使用jdt.core特有的。

非常感谢,我非常感谢长篇大论。

1 个答案:

答案 0 :(得分:0)

我最终通过在MANIFEST.MF中添加引用来解决它。 在依赖项中,我在必需的插件中添加了org.eclipse.jdt.core。