問題タブ [eclipse-emf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
784 参照

java - DocumentRoot を XML に書き込まない方法

私は EMF を使用しており、XSD から ecore を作成しました。

エディターによって保存されている XML に、元の XSD の一部ではない要素 DocumentRoot があることに気付きました。どうにかしてそれを生成できないので、エディターの XML ファイルに含まれませんか?

そうです

0 投票する
2 に答える
1629 参照

eclipse-emf - プログラムによる EMF コード生成の実行

.system作業用のコードを生成する拡張機能付きの EMF モデルを作成しました。

これで、Eclipse から起動コード生成アクションを使用してコードを生成できます。しかし、スタンドアロン プログラムからコード生成を起動してコードを生成したいと考えています。

どうすればこれを達成できますか?

詳細: EMF モデルからプラグインを作成し、Eclipse に組み込みました。

プラグインからファイルを作成.systemし、プラグインからコードを生成できます。

LauchActionコード生成をクリックすると、プラグインからクラスが開始されることがわかりました。

LaunchActionスタンドアロン Java プログラムからクラスを開始するにはどうすればよいですか?

私の目的は、作成した.systemモデルを実行し、スタンドアロンの Java プログラムからコードを生成することです。

どうすればこれを達成できますか?

0 投票する
1 に答える
1445 参照

eclipse - Eclipse EMFベースのライブラリを配布するためにJARSが必要ですか?

ライブラリ(OpenHealthToolsのMDHT)を使用して解析していCDA XMLます。
Eclipseの一部とEclipseのEMFプラグインに依存して機能します。ほとんどの依存関係に対処しましたが、まだこのエラーが発生しています。

fromEclipseをクラスパスに配置JARorg.eclipse.core.runtime.Platformました。追加の依存関係がありますか?

0 投票する
2 に答える
959 参照

eclipse - EMF の eGet が EObject ではなく Object を返すのはなぜですか?

Java で EMF フレームワークを使用していくつかのコードに取り組んでいますが、非常に使いにくいです。たとえば、タイプ セーフな EMF の上に OCL のようなクエリ API を実装することはできません。

理由の 1 つは、eGet()aがではなくのみをEStructuralFeature返すことです。したがって、私が書くものはすべて、安全ではなく、パフォーマンスが悪く、再利用可能な方法で一般化できない null チェック、型チェック、および型キャストの多くを使用する必要があります。ObjectEObject

EObjectEMFが任意のObject値のラッパーでダミーの実装を生成しないのはなぜですか?

単純なスローであってもEObject、インターフェイスを実装するのは本当に面倒です (API が大きすぎます)。同じことが、モデルを上に移動するのが苦痛になる方法にも当てはまります。EClassUnsupportedOperationExceptioneContainer()

0 投票する
5 に答える
18486 参照

java - EMF を使用して XML ファイルを読み取るには?

EMF = Eclipse モデリング フレームワーク

クラスプロジェクトの 1 つで EMF を使用する必要があります。EMF を使用して次のことを行う方法を理解しようとしています。

  1. XML を読み取り、
  2. 値をオブジェクトに取得します。
  3. ORM を使用して、オブジェクトの値をデータベースに永続化します。- 終わり
  4. ORM を使用してデータベースからデータを取得し、XML を生成します。

EMF(これまでに何もわからない)とJPA(DONE)を使用して、そのすべてを行う必要があります。

私は JAXB を使用しており、これは JAXB を使用して実行できることはわかっていますが、(EMF == JAXB) はどうですか?!

EMF を使用して多くの Java クラスを作成しましたが、その数は非常に多くあります。読み取り/書き込みメソッドをどこに実装し、EMF プロジェクトをどのように実行しますか?

ありがとう

UPDATE1 ヒント http://www.eclipsezone.com/eclipse/forums/t58829.html

UPDATE2

スキーマがあり、.xsd を使用してモデル コードを生成しました。現在、XML ファイルからデータを読み取る際に問題が発生しています。

0 投票する
3 に答える
11002 参照

dsl - JetbrainsのMPSとEclipseXtextの主な違いは何ですか?

私はいくつかのプロジェクトでEclipseXtextを使用しました。Ecore(メタ)モデルで文法を定義し、すばらしいEclipseプラグインエディターを含むすべてを生成できるようにするのは簡単でしたが、静的フィールドにすべてが組み込まれている基盤となるEMFフレームワークにはかなり不快でした。

最近、JetbrainsのMPS(メタプログラミングシステム)に出くわしました。それは完全に異なる哲学に基づいています。XtextはテキストベースのDSLを作成してパーサーを生成する(そしてそれらのEObjectをインスタンス化する)ためのものですが、MPSで作成された言語では、基礎となるモデル構造を直接編集します。これまでのところ、私はそれを取得します。

これらのDSLツールの操作、使用目的と対象者、複雑さ、学習曲線の主な違いを指摘するために、これらのDSLツールの両方を使用した経験はありますか(正直なところ、Xtextの使用を開始するには、EMFの根性についてかなり知っている必要があります) 、コード生成など?

0 投票する
3 に答える
3967 参照

eclipse - Xtextによって生成されたEMFオブジェクトツリーをトラバースするにはどうすればよいですか?

Xtextを使用してDSLを定義しています。Xtextは、入力DSLのEMFモデルをトラバースできるパーサーを生成します。このEMFモデルを他のツリーに変換したいと思います。この翻訳を行うには、ツリーをトラバースする必要があります。しかし、Xtextによって生成されたEMFモデルのビジタークラスが見つかりませんでした。私が見つけた最も近いものは、単一のノードにアクセスするSwitchクラスです。自分でEMFモデルをトラバースして、アクセスする各ノードでSwitchクラスを呼び出すことができます。しかし、モデルトラバーサルを実装するビジター機能がXtextに存在するのではないかと思います。

0 投票する
2 に答える
1115 参照

java - XtextベースのDSLでリンクが機能しないのはなぜですか?

以下は私のDSLのXtext文法です。

そして、以下は上記DSLのプログラムです。

以下は、生成されたクラスのサブクラスであり、ノードでnullを返すSwitchことを示しています。getPredicateType()Predicate

このクラスを使用しModelPrinterて、上記のプログラムに対応するEMFオブジェクトモデルをトラバースすると、ノードが適切にリンクされていないことに気付きました。たとえば、ノードのgetPredicateType()メソッドはを返します。Xtextユーザーガイドを読んだ後、私の印象では、Xtextのデフォルトのリンクセマンティクスは私のDSLで機能するはずです。しかし、何らかの理由で、DSLのASTノードが適切にリンクされていません。誰かがこの問題を診断するのを手伝ってくれますか?Predicatenull

0 投票する
1 に答える
538 参照

eclipse-emf - Ecore-File での再帰?

特定の UML モデルから Ecore モデルに変換しようとしました。この後、ジェネレーターモデルを作成しようとしています。

これを実行しようとするたびに、次のログに「未処理のイベント ループ例外」があるというエラー メッセージが表示されます。

org.eclipse.swt.SWTException: org.eclipse.swt.SWT.error(SWT.java:3884) で org.eclipse.swt.SWT.error(SWT.java) で実行可能 (java.lang.NullPointerException) を実行できませんでした:3799) org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) で org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3885) で org.eclipse.swt.widgets. Display.readAndDispatch(Display.java:3506) org.eclipse.jface.window.Window.runEventLoop(Window.java:825) org.eclipse.jface.window.Window.open(Window.java:801) org .eclipse.gmf.internal.bridge.ui.dashboard.DashboardMediator$RunWizardAction.run(DashboardMediator.java:316) at org.eclipse.gmf.internal.bridge.ui.dashboard.HyperlinkFigure$1.mousePressed(HyperlinkFigure.java:63) ) org.eclipse.draw2d.Figure.handleMousePressed(Figure.java:873) で、org.eclipse.draw2d.SWTEventDispatcher で。org.eclipse.draw2d.LightweightSystem$EventHandler.mouseDown(LightweightSystem.java:513) の dispatchMousePressed(SWTEventDispatcher.java:214) org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179) の org.eclipse org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) の .swt.widgets.EventTable.sendEvent(EventTable.java:84) org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java) :3910) org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) で 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) org.eclipse.ui の org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) で。org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java: 113) org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) で org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) で org.eclipse org.eclipse.core.runtime.adaptor の .core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) .EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) の java.lang.reflect.Method.invoke(不明なソース) での invoke(不明なソース) org.eclipse.equinox.launcher.Main.basicRun での(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) 原因: java.lang.NullPointerException at org.eclipse.emf.converter.util.ConverterUtil.computeRequiredPackages(ConverterUtil) .java:374) で org.eclipse.emf.converter.ui.contribution.base.ModelConverterPackagePage.validate(ModelConverterPackagePage.java:965) で org.eclipse.emf.importer.ui.contribution.base.ModelImporterPackagePage.validate(ModelImporterPackagePage) .java:101) org.eclipse.emf.converter.ui.contribution.base.ModelConverterPackagePage$1.run(ModelConverterPackagePage.java:155) で org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) でorg.eclipse.swt.widgets にあります。Synchronizer.runAsyncMessages(Synchronizer.java:134) ... 34 もっと見る

この後、「エディター ID org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelEditorID を作成できません:予期しない例外がスローされました。」というテキストで別の例外が発生します。

セッションデータは次のように述べています: eclipse.buildId=unknown java.version=1.6.0_13 java.vendor=Sun Microsystems Inc. BootLoader 定数: OS=win32, ARCH=x86, WS=win32, NL=de_DE フレームワーク引数: -product org. eclipse.epp.package.modeling.product コマンドライン引数: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.modeling.product -consoleLog

この長いログでは:

org.eclipse.emf.codegen.ecore.genmodel.impl.GenModelImpl.diagnose(GenModelImpl.java:2930) の org.eclipse.emf.ecore.util.EcoreUtil.getURI(EcoreUtil.java:2887) での java.lang.NullPointerException ) org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelEditor.validate(GenModelEditor.java:1773) で org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelEditor.initialize(GenModelEditor.java:596) で) org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelEditor.createPages(GenModelEditor.java:1080) で org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:357) で org.eclipse. ui.internal.EditorReference.createPartHelper(EditorReference.java:662) の org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:462) の org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) org.eclipse.ui.internal.EditorReference.getEditor(EditorReference.java:286) で org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2857) で 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.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2701) の org.eclipse.ui.internal.WorkbenchPage.openEditor( WorkbenchPage.java:2685) で org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2668) で org.eclipse.emf.converter.ui.contribution.base.ModelConverterWizard.openEditor(ModelConverterWizard.java:318) でorg.eclipse.emf.importer.ui にあります。org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:752) での貢献.base.ModelImporterWizard.performFinish(ModelImporterWizard.java:167) org.eclipse.gmf.internal.bridge.ui.dashboard.DashboardMediator$ でRunWizardAction$1.finishPressed(DashboardMediator.java:311) at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:373) at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624) org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228) で org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) で org.eclipse.swt.widgets.Widget.sendEvent (Widget.java:1003) org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910) で org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503) で org.eclipse. jface.window.Window.runEventLoop(Window.java:825) org.org.eclipse.gmf.internal.bridge.ui.dashboard.DashboardMediator$RunWizardAction.run(DashboardMediator.java:316) で org.eclipse.gmf で eclipse.jface.window.Window.open(Window.java:801)。 internal.bridge.ui.dashboard.HyperlinkFigure$1.mousePressed(HyperlinkFigure.java:63) at org.eclipse.draw2d.Figure.handleMousePressed(Figure.java:873) at org.eclipse.draw2d.SWTEventDispatcher.dispatchMousePressed(SWTEventDispatcherjava.java) :214) org.eclipse.draw2d.LightweightSystem$EventHandler.mouseDown(LightweightSystem.java:513) で org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179) で org.eclipse.swt.widgets. org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) の EventTable.sendEvent(EventTable.java:84) org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910) の org .eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503) org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) で org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) で 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) ) org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) で org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) で org.eclipse.ui.internal.ide.application. org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher. java:110) 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) sun.reflect.NativeMethodAccessorImpl.invoke0 (ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke (不明なソース) で sun.reflect.DelegatingMethodAccessorImpl.invoke (不明なソース) で java.lang.reflect.Method.invoke (不明なソース) org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) で org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) で org.eclipse.equinox.launcher.Main.run (Main.java:1311)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)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)

誰が何がうまくいかないのか考えていますか? 私は自分のモデルをしばらく見ましたが、何か問題を見つけることができませんでした。「未処理のイベント ループ例外」が原因で再帰が発生する可能性があると思いましたが、これは可能ですか?

前もってありがとう、ドミニク

0 投票する
2 に答える
1093 参照

java - 生成されたコードを変更しますか、それとも継承を使用しますか?

私はEMFプロジェクトに取り組んでいます。設計上の決定の1つは、生成されたコードに触れたりチェックインしたりしないことでした。代わりに、何かを変更する必要があるときはいつでも、変更を含むサブクラスが作成されます。フレームワークはこれに対処するのに十分な柔軟性があります。ただし、作業のオーバーヘッドが発生します。

設計上の決定は、他のコード生成フレームワークでの悪い経験に基づいて行われ、問題が発生した場合に再生成されました。

プロジェクトに不慣れなので、その設計上の決定に挑戦したいと思いますが、最初に一般的な意見を聞きたいと思います。EMFプロジェクトチームがコード内の変更を推奨していることを私は知っています。しかし、あなたの経験は何ですか?EMFは、生成されたコードの手動コード変更をどの程度適切に処理しますか?手動で記述されたコードを失うことになったことがありますか?コードが保守不可能な状態になったことがありますか?