我正在尝试使用基于功能的Maven / Tycho构建Eclipse RCP应用程序。我的应用程序是一种简单的语言,带有编辑器(在Xtext的帮助下构建)和一些其他插件,这些插件是项目的依赖项。有一些描述如何创建Eclipse RCP应用程序的方法,例如
http://mattiasholmqvist.se/2010/03/building-with-tycho-part-2-rcp-applications/
或
https://kthoms.wordpress.com/2010/11/12/setting-up-a-rcp-product-for-a-dsl/
到目前为止,我做了什么:
创建了一个包含feature.xml的插件项目。 feature.xml包含语言插件及其依赖项
创建了一个包含产品定义的插件项目。产品定义以插件项目名称命名(Mattias Homlqvist(本文中的第一个链接)强调Tycho对产品文件名做出假设(与插件项目名称相关))。在产品定义中,我创建了一个新产品,并指向'org.eclipse.ui.ide.workbench'应用程序。我还在编辑器的依赖项选项卡中添加了我的功能插件和org.eclipse.pde以及org.eclipse.rcp功能。
如果我正在尝试运行该产品,我会遇到异常:
java.lang.RuntimeException: No application id has been found.
at org.eclipse.equinox.internal.app.EclipseAppContainer.
startDefaultApp(EclipseAppContainer.java:242)
at org.eclipse.equinox.internal.app.MainApplicationLauncher.
run(MainApplicationLauncher.java:29)
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:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.
run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.
invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.
invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
好的,有些事情非常糟糕。现在,我正在检查是否在“插件”选项卡的运行配置对话框中添加了所有必需的插件。因此,未选择产品和功能插件。如果我按下“添加所需的插件”,则会添加产品插件,只需弹出“验证插件”并显示“未检测到任何问题”。如果我再次尝试运行该产品,我会得到相同的异常。在产品定义编辑器中按“同步”会恢复我所做的更改(产品和功能被取消选择) - 我想知道为什么?
Maven / Tycho构建本身似乎有效。如果我正在尝试使用
构建项目mvn install
创建相应平台的zip文件。不幸的是,问题仍然存在,并且构建不可执行。所以,可能我在我的功能和/或产品插件项目中犯了一个可怕的错误。也许有人有想法或者可以指出我正确的方向?
提前致谢!
答案 0 :(得分:1)
我遇到了类似的问题,对我来说,它在运行配置“插件”选项卡中检查“自动将新工作区插件添加到此启动配置”。
你也可以检查自动启动(对我来说,“默认”工作)。
最好的问候。
答案 1 :(得分:1)
您的产品应该是“基于功能的”,并且在您的功能中,您应该添加在plugin.xml上添加的相同插件
另外,在“包含的功能”标签中,您应该添加org.eclipse.rcp功能