开发RCP程序时的问题

学习RCP,遇到了点问题,所以把它记录下来,为学者们少走弯路。

最近在公司学习开发RCP程序时,需要做一个报表,我用JFreeChart做了一个报表出来,单个JAVA BEAN程序运行可以得到结果,但是我想以视图或者编辑器的方式打开运行,可是老是报错,错误信息为:未能打开编辑器:未能实例化编辑器类。这通常表示缺少了 no-arg 构造函数,或在 plugin.xml 中错误地输入了编辑器的类名。其中的错误LOG是:

java.lang.NoClassDefFoundError: org/jfree/data/category/CategoryDataset
 at java.lang.Class.getDeclaredConstructors0(Native Method)
 at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
 at java.lang.Class.getConstructor0(Unknown Source)
 at java.lang.Class.newInstance0(Unknown Source)
 at java.lang.Class.newInstance(Unknown Source)
 at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:170)
 at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:874)
 at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
 at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:51)
 at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:259)
 at org.eclipse.ui.internal.registry.EditorDescriptor.createEditor(EditorDescriptor.java:235)
 at org.eclipse.ui.internal.EditorManager.createPart(EditorManager.java:845)
 at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:606)
 at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:462)
 at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
 at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:313)
 at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180)
 at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270)
 at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
 at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473)
 at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1256)
 at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1209)
 at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1608)
 at org.eclipse.ui.internal.PartStack.add(PartStack.java:499)
 at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:103)
 at org.eclipse.ui.internal.PartStack.add(PartStack.java:485)
 at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:112)
 at org.eclipse.ui.internal.EditorSashContainer.addEditor(EditorSashContainer.java:63)
 at org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorAreaHelper.java:225)
 at org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAreaHelper.java:213)
 at org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:778)
 at org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:677)
 at org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:638)
 at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2854)
 at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2762)
 at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2754)
 at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2705)
 at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
 at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2701)
 at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2685)
 at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2668)
 at lucky.Action.StatisticAction.run(StatisticAction.java:51)
 at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
 at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
 at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
 at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
 at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
 at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
 at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3880)
 at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3473)
 at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
 at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
 at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
 at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
 at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
 at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
 at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
 at cn.com.org.mvb.Application.start(Application.java:20)
 at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
 at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
 at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
 at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
 at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
 at org.eclipse.equinox.launcher.Main.main(Main.java:1287)
Caused by: java.lang.ClassNotFoundException: org.jfree.data.category.CategoryDataset
 at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494)
 at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
 at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
 at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at java.lang.ClassLoader.loadClassInternal(Unknown Source)
 ... 71 more

 

报错的原因是由于RCP的特性欺骗了我,本以为在系统库中添加了JFreeChart的所有包就可以了,但是RCP得特性是要将外来的包都需要在plugin.xml文件中配置加入包才能被系统找到,否则运行就是报找到不到类。我被他给骗惨了,现在好了,给你们借鉴下少走弯路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值