我正在使用Eclipse进行一些嵌入式开发,最近每次保存文件或进行构建时都会开始给我这些错误。这很烦人,但在大多数情况下它似乎没有造成任何问题(它甚至还突出了源头的警告/错误。这里发生了什么?
Plug-in org.eclipse.cdt.cross.arm.gnu was unable to load class
org.eclipse.cdt.managedbuilder.internal.scannerconfig.DefaultGnuWinScannerInfoCollector.
Plug-in org.eclipse.cdt.cross.arm.gnu was unable to load class
org.eclipse.cdt.managedbuilder.internal.scannerconfig.ManagedGCCScannerInfoConsoleParser
答案 0 :(得分:1)
最可能的原因是在违规插件声明的类的静态初始化程序中抛出异常。检查.log文件以确定是否确实发生了这种情况 在构成插件的Java类初始化期间抛出异常时,Eclipse Platform加载程序不会加载插件。
此错误的另一个常见原因是缺少正在加载的类的适当构造函数。在扩展点中声明的大多数类必须具有公共零参数构造函数。检查扩展点文档,以查看在扩展中声明的类所需的构造函数。
如果问题仅在部署打包的插件时发生(即,当它未通过PDE在运行时工作台中启动时),通常最好检查MANIFEST.MF文件中的Bundle-ClassPath属性。
必须在Bundle-ClassPath
中列出包含插件类的JAR文件。即使插件的正确类都已列出,类加载仍可能失败,因为.class文件可能包含对在运行时无法解析的其他类的引用。在这种情况下,需要识别缺失的类(通常通过查看有问题的类的import语句),并且需要将必要的条目添加到Bundle-ClassPath
。如果需要其他JAR文件,则还需要在build.properties
文件中列出这些JAR,以便在打包插件时包含它们。
(请参阅this thread作为最后一点的说明)
所以,例如,在this thread中,回到eclipse3.0时的另一个问题:
plugin.xml
文件指定“org.eclipse.core.runtime.compatablity
”作为必需的插件。但是,我使用的是Eclipse Version 3.0.1,应使用“org.eclipse.core.runtime_3.0.1
”。解决方案:
替换Plugin.xml中的行
<import plugin="org.eclipse.core.runtime.compatability"/>
与
<import plugin="org.eclipse.core.runtime"/>
答案 1 :(得分:0)
VonC是对的 - 有关类加载可能出错的详细信息......
在这种情况下,你的arm.cross工具链引用了CDT的managedbuild中无法访问的内部类。这是您的手臂工具链和CDT之间的不兼容性。您应该在此错误上提交错误,首先尝试更新的版本。