問題タブ [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.
java - DocumentRoot を XML に書き込まない方法
私は EMF を使用しており、XSD から ecore を作成しました。
エディターによって保存されている XML に、元の XSD の一部ではない要素 DocumentRoot があることに気付きました。どうにかしてそれを生成できないので、エディターの XML ファイルに含まれませんか?
そうです
eclipse-emf - プログラムによる EMF コード生成の実行
.system
作業用のコードを生成する拡張機能付きの EMF モデルを作成しました。
これで、Eclipse から起動コード生成アクションを使用してコードを生成できます。しかし、スタンドアロン プログラムからコード生成を起動してコードを生成したいと考えています。
どうすればこれを達成できますか?
詳細: EMF モデルからプラグインを作成し、Eclipse に組み込みました。
プラグインからファイルを作成.system
し、プラグインからコードを生成できます。
LauchAction
コード生成をクリックすると、プラグインからクラスが開始されることがわかりました。
LaunchAction
スタンドアロン Java プログラムからクラスを開始するにはどうすればよいですか?
私の目的は、作成した.system
モデルを実行し、スタンドアロンの Java プログラムからコードを生成することです。
どうすればこれを達成できますか?
eclipse - Eclipse EMFベースのライブラリを配布するためにJARSが必要ですか?
ライブラリ(OpenHealthToolsのMDHT)を使用して解析していCDA XML
ます。
Eclipseの一部とEclipseのEMFプラグインに依存して機能します。ほとんどの依存関係に対処しましたが、まだこのエラーが発生しています。
fromEclipseをクラスパスに配置JAR
しorg.eclipse.core.runtime.Platform
ました。追加の依存関係がありますか?
eclipse - EMF の eGet が EObject ではなく Object を返すのはなぜですか?
Java で EMF フレームワークを使用していくつかのコードに取り組んでいますが、非常に使いにくいです。たとえば、タイプ セーフな EMF の上に OCL のようなクエリ API を実装することはできません。
理由の 1 つは、eGet()
aがではなくのみをEStructuralFeature
返すことです。したがって、私が書くものはすべて、安全ではなく、パフォーマンスが悪く、再利用可能な方法で一般化できない null チェック、型チェック、および型キャストの多くを使用する必要があります。Object
EObject
EObject
EMFが任意のObject
値のラッパーでダミーの実装を生成しないのはなぜですか?
単純なスローであってもEObject
、インターフェイスを実装するのは本当に面倒です (API が大きすぎます)。同じことが、モデルを上に移動するのが苦痛になる方法にも当てはまります。EClass
UnsupportedOperationException
eContainer()
java - EMF を使用して XML ファイルを読み取るには?
EMF = Eclipse モデリング フレームワーク
クラスプロジェクトの 1 つで EMF を使用する必要があります。EMF を使用して次のことを行う方法を理解しようとしています。
- XML を読み取り、
- 値をオブジェクトに取得します。
- ORM を使用して、オブジェクトの値をデータベースに永続化します。- 終わり
- ORM を使用してデータベースからデータを取得し、XML を生成します。
EMF(これまでに何もわからない)とJPA(DONE)を使用して、そのすべてを行う必要があります。
私は JAXB を使用しており、これは JAXB を使用して実行できることはわかっていますが、(EMF == JAXB) はどうですか?!
EMF を使用して多くの Java クラスを作成しましたが、その数は非常に多くあります。読み取り/書き込みメソッドをどこに実装し、EMF プロジェクトをどのように実行しますか?
ありがとう
UPDATE1 ヒント http://www.eclipsezone.com/eclipse/forums/t58829.html
UPDATE2
スキーマがあり、.xsd を使用してモデル コードを生成しました。現在、XML ファイルからデータを読み取る際に問題が発生しています。
dsl - JetbrainsのMPSとEclipseXtextの主な違いは何ですか?
私はいくつかのプロジェクトでEclipseXtextを使用しました。Ecore(メタ)モデルで文法を定義し、すばらしいEclipseプラグインエディターを含むすべてを生成できるようにするのは簡単でしたが、静的フィールドにすべてが組み込まれている基盤となるEMFフレームワークにはかなり不快でした。
最近、JetbrainsのMPS(メタプログラミングシステム)に出くわしました。それは完全に異なる哲学に基づいています。XtextはテキストベースのDSLを作成してパーサーを生成する(そしてそれらのEObjectをインスタンス化する)ためのものですが、MPSで作成された言語では、基礎となるモデル構造を直接編集します。これまでのところ、私はそれを取得します。
これらのDSLツールの操作、使用目的と対象者、複雑さ、学習曲線の主な違いを指摘するために、これらのDSLツールの両方を使用した経験はありますか(正直なところ、Xtextの使用を開始するには、EMFの根性についてかなり知っている必要があります) 、コード生成など?
eclipse - Xtextによって生成されたEMFオブジェクトツリーをトラバースするにはどうすればよいですか?
Xtextを使用してDSLを定義しています。Xtextは、入力DSLのEMFモデルをトラバースできるパーサーを生成します。このEMFモデルを他のツリーに変換したいと思います。この翻訳を行うには、ツリーをトラバースする必要があります。しかし、Xtextによって生成されたEMFモデルのビジタークラスが見つかりませんでした。私が見つけた最も近いものは、単一のノードにアクセスするSwitchクラスです。自分でEMFモデルをトラバースして、アクセスする各ノードでSwitchクラスを呼び出すことができます。しかし、モデルトラバーサルを実装するビジター機能がXtextに存在するのではないかと思います。
java - XtextベースのDSLでリンクが機能しないのはなぜですか?
以下は私のDSLのXtext文法です。
そして、以下は上記DSLのプログラムです。
以下は、生成されたクラスのサブクラスであり、ノードでnullを返すSwitch
ことを示しています。getPredicateType()
Predicate
このクラスを使用しModelPrinter
て、上記のプログラムに対応するEMFオブジェクトモデルをトラバースすると、ノードが適切にリンクされていないことに気付きました。たとえば、ノードのgetPredicateType()
メソッドはを返します。Xtextユーザーガイドを読んだ後、私の印象では、Xtextのデフォルトのリンクセマンティクスは私のDSLで機能するはずです。しかし、何らかの理由で、DSLのASTノードが適切にリンクされていません。誰かがこの問題を診断するのを手伝ってくれますか?Predicate
null
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)
誰が何がうまくいかないのか考えていますか? 私は自分のモデルをしばらく見ましたが、何か問題を見つけることができませんでした。「未処理のイベント ループ例外」が原因で再帰が発生する可能性があると思いましたが、これは可能ですか?
前もってありがとう、ドミニク
java - 生成されたコードを変更しますか、それとも継承を使用しますか?
私はEMFプロジェクトに取り組んでいます。設計上の決定の1つは、生成されたコードに触れたりチェックインしたりしないことでした。代わりに、何かを変更する必要があるときはいつでも、変更を含むサブクラスが作成されます。フレームワークはこれに対処するのに十分な柔軟性があります。ただし、作業のオーバーヘッドが発生します。
設計上の決定は、他のコード生成フレームワークでの悪い経験に基づいて行われ、問題が発生した場合に再生成されました。
プロジェクトに不慣れなので、その設計上の決定に挑戦したいと思いますが、最初に一般的な意見を聞きたいと思います。EMFプロジェクトチームがコード内の変更を推奨していることを私は知っています。しかし、あなたの経験は何ですか?EMFは、生成されたコードの手動コード変更をどの程度適切に処理しますか?手動で記述されたコードを失うことになったことがありますか?コードが保守不可能な状態になったことがありますか?