`
min12605
  • 浏览: 55013 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

EMF+GEF的一些总结

阅读更多

     最近以新手的身份,开始了Eclipse的插件开发工作,要完成一个Designer的工作,使用的是EMF+GEF的结合,利用EMF来建模,然后用GEF完成可视化的工作。不废话了,总结下自己工作中遇到的问题吧。

 

1、建立一个EMF的工程,建立属于自己的模型,从*.genmodel文件产生一个model文件,这样就完成了建模的插件。

 

2、建立一个插件项目,用来完成自己的Designer;

 

3、在新建的插件项目中要使用已经建好的model,有两种方式:一是将生成model代码文件的目标目录修改到插件项目中,在*.genmodel的属性试图中可以找到生成的目标目录,改之。这样就是等于是直接在自己的插件项目中建立了模型(官方的教程:use gef with emf,好像是这样做的);二就是直接从genmodel中生成model的代码,然后在插件项目中的plugin.xml-->dependencies-->required plug-ins中加入生成的model插件即可。注意的是,在model的项目的plugin.xml中的runtime-->export package中有model的相关包。在3.3的平台中,这样做应该比较容易实现,依赖应该也是没什么问题的。

 

4、模型有了,就可以开始自己的GEF的各项工作了。

 

错误:

 

这次使用EMF+GEF时遇到了一个问题,当我建好工程后,想要调试看看效果,结果报这个错误:

ava.lang.ClassNotFoundException: **.**.Editor
	at java.lang.ClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:429)
	at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369)
	at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at org.eclipse.osgi.framework.internal.core.BundleLoader.loadClass(BundleLoader.java:289)
	at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:227)
	at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1269)
	at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:160)
	at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:788)
	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:244)
	at org.eclipse.ui.internal.registry.EditorDescriptor.createEditor(EditorDescriptor.java:231)
	at org.eclipse.ui.internal.EditorManager.createPart(EditorManager.java:841)
	at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:606)
	at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:426)
	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:592)
	at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:299)
	at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:179)
	at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:268)
	at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
	at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:400)
	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:1604)
	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:217)
	at org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAreaHelper.java:207)
	at org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:774)
	at org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:673)
	at org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:634)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2737)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2651)
	at org.eclipse.ui.internal.WorkbenchPage.access$13(WorkbenchPage.java:2643)
	at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2595)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2590)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2574)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2565)
	at org.eclipse.ui.ide.IDE.openEditor(IDE.java:644)
	at org.eclipse.ui.ide.IDE.openEditor(IDE.java:603)
	at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:286)
	at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:139)
	at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:194)
	at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:175)
	at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:268)
	at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:244)
	at org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.handleOpen(PackageExplorerActionGroup.java:316)
	at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$5.open(PackageExplorerPart.java:613)
	at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:820)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.runtime.Platform.run(Platform.java:857)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
	at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:818)
	at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1079)
	at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1183)
	at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:263)
	at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:257)
	at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:297)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
	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:508)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1148)

       开始以为是网上所说的依赖关系的问题,但是按网上的说法尝试很久无果啊。后来发现,问题处在插件项目的plugin.xml的built.properties中缺少了source,添加之后问题解决。

 

再附上built.properties的代码吧,很简单,但是很重要,改天研究一下这个文件。

 

source.. = src/
output.. = bin/
bin.includes = .,\
                 plugin.xml,\
                 META-INF/

 

 

分享到:
评论
2 楼 min12605 2008-10-22  
lggege 写道

EMF 我还不会呢, 一直也只是知道, 看来要用EMF来建模, 来改造我原有的GEF项目了. 手写模型确实太抽象了.

我也是按着八进制的教学学习的,也完全是个新手,但是从目前来看,将模型和表示分开成两个插件项目后,对模型的修改对GEF部分产生影响比较小,而且修改方便,修改模型的UML图之后自动就可以生成代码了,感觉还不错
1 楼 lggege 2008-10-16  
EMF 我还不会呢, 一直也只是知道, 看来要用EMF来建模, 来改造我原有的GEF项目了. 手写模型确实太抽象了.

相关推荐

    EMF+GEF+VE

    在Eclipse-jee-helios-SR2-win32这个版本的Eclipse集成开发环境中,结合EMF、GEF和VE,开发者可以更方便地设计和实现基于ArcEngine的地图编辑和展示功能,创建出具有图形化界面和模型驱动的GIS应用程序。 通过将EMF...

    EMF、GEF、VE 适合于Eclipse 3.2.0

    总结一下,EMF、GEF和VE是Eclipse平台上用于模型驱动开发的重要组成部分。EMF负责模型的定义和数据管理,GEF提供图形编辑工具,而VE则实现了Java代码的可视化编辑。在Eclipse 3.2.0中,这三者被集成在一起,为开发者...

    适用于eclipse3.5的VE1.4插件+emf+GEF

    这个插件需要与EMF(Eclipse Modeling Framework)和GEF(Graphical Editing Framework)共同工作,以提供强大的模型驱动开发能力。 1. **Eclipse 3.5**:这是Eclipse IDE的一个版本,代号为"Galileo",发布于2009...

    EMF_GEF_入门系列

    EMF(Eclipse Modeling Framework)和GEF(Graphical Editing Framework)是两个在Java开发环境中广泛使用的开源框架,尤其在创建图形用户界面和建模工具方面。本入门系列旨在帮助初学者快速理解并掌握这两个强大的...

    emf2.4.2+gef3.4.2+ve1.5.0+中语言文包

    标题中的"emf2.4.2+gef3.4.2+ve1.5.0+中语言文包"代表了三个核心组件及其对应的版本和一个中文语言包,这些都是针对Java开发环境中的特定工具。EMF(Eclipse Modeling Framework)、GEF(Graphical Editing ...

    Eclipse完整包,插件(emf2.4.2+gef3.4.2)+中文包+eclipse3.5.1

    这个压缩包包含的是一份Eclipse的完整安装,其中包括了两个重要的插件:EMF(Eclipse Modeling Framework)2.4.2版本和GEF(Graphical Editing Framework)3.4.2版本,以及Eclipse的中文语言包和3.5.1版本的Eclipse...

    GEF-ALL-3.7+GEF-ALL-3.8+GEF_Draw2d学习资料

    3. "如何在Eclipse3.3.1.1中安装VE,emf,GEF插件.doc" 提供了在特定版本的Eclipse中安装相关插件的步骤,这对于搭建开发环境至关重要。 4. "GEF_Tutorial.pdf" 和 "GEF_zh(1).pdf"、"GEF_zh.pdf" 是GEF的教程,可能...

    VE 1.2 +GEF+EMF 集成包(virtual editor 1.2) 及说明文档

    VE 1.2 +GEF+EMF 集成包(virtual editor 1.2) emf-sdo-runtime-2.2.0.zip GEF-runtime-3.2.zip VE-runtime-1.2.1.zip VE-SDK-1.2.1.zip 还要继续下载第二个包一起解压 第二个包名称为: VE 1.2 +GEF+EMF 集成包...

    elicpse3.4插件visual editor(ve)1.4+emf2.4+gef3.4完美整合版,适合myeclipse7.0,eclipse3.4

    在这个特定的压缩包文件中,我们关注的是Eclipse 3.4版本的三个关键插件:Visual Editor (VE) 1.4、EMF (Eclipse Modeling Framework) 2.4 和 GEF (Graphical Editing Framework) 3.4。这些插件对于提升Eclipse在...

    eclipse emf&gef

    详细讲述了emf和gef的用法,和模型开发过程,有很多实例的

    emf-gef-ve.7z

    4. **文件“pax_global_header”和“EMF+GEF+VE.rar”**:这两个文件可能是解压“emf-gef-ve.7z”的关键。"pax_global_header"可能是一个标准的Unix档案头,用于包含额外的元数据信息。而"EMF+GEF+VE.rar"很可能是一...

    VE 1.2 +GEF+EMF 集成包(virtual editor 1.2) 及说明文档.zip.002

    VE 1.2 +GEF+EMF 集成包(virtual editor 1.2) 及说明文档.zip.002

    eclipse 图像界面设计 VE插件 (包含所需emf,gef)及安装教程

    在本文中,我们将深入探讨Eclipse中的图像界面设计工具——Visual Editor(VE)插件,以及如何在Eclipse 3.2版本中安装它,同时涉及与VE相关的EMF(Eclipse Modeling Framework)和GEF(Graphical Editing Framework...

    eclipse 3.3 emf 2.20 gef 3.2 ve 1.2

    结合这些组件,开发者可以利用Eclipse 3.3,EMF 2.20,GEF 3.2和VE 1.2来构建强大的模型驱动和图形化的应用程序,这些应用程序不仅具有丰富的用户界面,还能处理复杂的模型数据。通过EMF,开发者可以定义和操作数据...

    Eclipse-EMF-GEF资料.rar

    5. **Eclipse技巧.rar** 和 **Eclipse Development using the GEF and the EMF-src.zip**: 这两个文件可能包含了一些关于如何更有效地使用 Eclipse、GEF 和 EMF 进行开发的技巧和源代码示例。它们能帮助开发者提升...

    win--eclipse3.4.2 安装VE插件所需插件(emf, gef ,ve)

    "win-eclipse3.4.2 安装VE插件所需插件(emf, gef, ve)"这个主题主要涉及到Eclipse中的三个关键插件:EMF( Eclipse Modeling Framework)、GEF(Graphical Editing Framework)和VE(Visual Editor)。 EMF是...

    lomboz-emf-gef-jem-3.1RC2.zip

    总结来说,"lomboz-emf-gef-jem-3.1RC2.zip" 是一个针对Java Web开发者的强大工具集,它整合了Eclipse的多个扩展,如Lomboz用于Web开发,EMF和GEF用于模型驱动和图形化编辑,JEM则助力Java EE应用的建模。...

    eclipse中emf,gef,ve的安装

    eclipse中emf,gef,ve的安装

    Eclipse安装可视化Visual Editor 的操作以及所需插件1(EMF,GEF)

    好了,准备工作完成后我们就开始安装了,大家看我是怎么安装的,我的eclipse是安装在D:\Eclipse目录下的,我在Eclipse文件夹下面建了三个文件夹,分别命名问EMF,GEF,VE_SDK,现在我们要做的就是把我们刚刚下载下来...

    GEF快速入门教程和EMF教程

    这里要讲的GEF 例子,还是从任何学习编程的最普通例子HelloWorld 开始。我们要用GEF 这把牛刀来处理HelloWorld 这个小菜。

Global site tag (gtag.js) - Google Analytics