我已经在eclipse juno中构建了一个eclipse功能项目,当我从IDE启动程序时,一切都很好,控制台中没有错误。
当我导出它运行的产品时,它不显示我在Application.e4xmi文件中创建的部件的内容(仅灰色背景)。当我检查导出文件夹中的配置文件夹时,会出现一个包含以下错误的日志文件:
!ENTRY org.eclipse.e4.ui.workbench 4 0 2012-07-19 19:22:13.859
MESSAGE Unable to load class 'be.yt.diepvriezer.ui.handlers.ExitHandler' from bundle '2'
!ENTRY org.eclipse.e4.ui.workbench 4 0 2012-07-19 19:22:13.859 !MESSAGE无法从包'2'加载类'be.yt.diepvriezer.ui.handlers.ExitHandler' !堆栈0 java.lang.ClassNotFoundException:be.yt.diepvriezer.ui.handlers.ExitHandler 在org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501) 在org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421) 在org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412) 在org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) .....
依旧是我在应用程序模型中创建的每个处理程序和部分。
我检查了build.properties和manifest文件,一切都在那里。
有人能指出我正确的方向如何解决这个问题吗?
答案 0 :(得分:3)
有时您需要使用“-clean”启动应用程序,或者定义“osgi.clean = true”以确保清除缓存的依赖项。在干净的工作区中启动将产生相同的效果(没有缓存值):
“OSGi框架和eclipse运行时使用的任何缓存数据都将被清除。这将清除用于存储bundle依赖项解析和eclipse扩展注册表数据的缓存。使用此选项将强制eclipse重新初始化这些缓存。”< / p>
更多信息here。
答案 1 :(得分:0)
没有解决方案,只需检查一下:
当您查看导出产品的plugins/
子目录时,它是否包含be.yt.diepvriezer.ui.handlers.ExitHandler
的插件?
如果没有,则需要将该插件添加到产品中。当您从IDE中启动RCP产品时,通常会包含工作区中的所有插件,但是当您导出产品时,您确实需要列出您真正想要包含在*.product
文件中的所有插件(直接或通过*.feature
s)
当您解压缩该插件jar文件时,...ExitHandler
类真的在那里吗?如果没有,产品导出失败。
Application.e4xmi
是否与代码在同一个插件中引用了您的..ExitHandler
?如果没有,那么包含..ExitHandler
的插件的类加载器无法访问提供Application.e4xmi
的“其他”插件中的代码。