如何使简化的RCP应用程序真正独立?
这是我对新知识水平的旧问题的全面重构。
问题摘要
我的日食产品不起作用。 它需要任何附加function吗?
创建简单的RCP应用程序
此时所有向导function都被禁用,我按下Finish
按钮。 因此,Eclipse仅使用MANIFEST.MF
和build.properties
文件创建几乎为空的项目。
现在我正在创建一个应用程序。 Application是org.eclipse.core.runtime.applications
扩展点的扩展,它在org.eclipse.core.runtime
插件中实现。 所以我将此插件添加为依赖项:
这将在Package Explorer
创建一个名为Plug-in Dependencies
新节点:
现在我在插件中添加新的扩展名:
我给我的应用程序提供了一个id myappid
,并为它分配了一个类myproject.Application
。
这将创建一个文件plugin.xml
其中包含所有这些信息。 此文件也是从build.properties
引用的:
source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ plugin.xml
同时MANIFEST.MF
变为无效,因为它现在需要是单例,可以自动设置,也可以通过Overview
选项卡中的复选框设置:
请注意,虽然我的应用程序ID是myappid
,但此名称不是完全限定的。 完全限定名称出现在插件ID之间的连接中,这是。 在我的例子中,它是myproject.myappid
。
现在我将(返回)清单编辑器的Extensions
选项卡,并通过单击class
超链接为应用程序创建类文件:
这将调用New Java class
向导,最后创建java
文件并在编辑器中打开它:
package myproject; import org.eclipse.equinox.app.IApplication; import org.eclipse.equinox.app.IApplicationContext; public class Application implements IApplication { @Override public Object start(IApplicationContext context) throws Exception { // TODO Auto-generated method stub return null; } @Override public void stop() { // TODO Auto-generated method stub } }
我在这里只添加一行,在start
方法中:
System.out.println("Hello world from myproject");
现在保存完所有后,我可以从清单编辑器的Overview
选项卡运行应用程序。 程序工作并打印预期的内容:
来自myproject的Hello world
在Eclipse控制台视图中进行打印。
创建产品配置
现在我正在创建一个产品配置,这是导出向导可以工作所必需的。
同时创建和设置产品文件会将plugin.xml
文件的扩展名添加到org.eclipse.core.runtime.products
扩展点。
在产品文件编辑器的Overview
选项卡上,按New
按钮,它会调用New Product Definition
窗口:
我填写了新的产品名称,产品ID和引用的应用程序,这是我之前获得的完全限定名称。
现在我的plugin.xml
文件lokks如下:
您看到我们的产品在那里代表。
现在我需要做一个我很长时间都找不到的技巧。
尽管产品文件正确引用了应用程序和插件,但它并未自动包含在产品内容中。 我认为这是Eclipse的bug。
所以,我转到产品文件编辑器的Dependencies
选项卡,并添加我自己的插件:
之后,我需要按魔术按钮Add Required Plug-ins
现在,我可以从产品文件编辑器的“ Overview
面板中运行我的应用程序,它可以按预期工作(在控制台视图中打印文本)。
出口产品
只有现在我才能使用导出向导
这将创建目录D:\myproject
并将所有内容放入其中。 它可以通过在里面运行eclipse.exe
来运行
不幸的是,它没有做任何事情,但是,没有例外。
问题
1)为什么导出的程序什么都不做? 它需要eclipse控制台吗? 或者它只是不起作用?
2)如何打印程序? 是否可以像Eclipse一样提供GUI控制台? 或者是否可以强制它打印到操作系统终端/控制台?
1)检查你的环境,尤其是JAVA_OPTS。 如果有任何内容,请取消设置变量并再次尝试运行
2)使用“java -version”检查路径上的JDK。 它是1.7.0版本(在执行环境中指定)并且它与eclipse启动器匹配(即如果您使用的是64位eclipse,它应该是64位JDK而不是32位版本,并且反之亦然)。 如果存在不匹配,请修复(将PATH / JAVA_HOME设置为正确的位置并重试运行)。 请注意,在Windows上,可以在注册表中配置默认JRE,并且您的路径可能是明确的。 检查“控制面板”中的Java设置以查看首选的设置。 哎呀,甚至更好,不要冒险:在eclipse.ini中添加以下行,指向正确的JDK位置,超过-vmargs行:
-vm C:\path\to\the\proper\jdk\bin\javaw.exe
3)查看文件夹“configuration / .log”(时间戳是UNIX长)。 有时当工作空间没有被创建时,Eclipse会在那里记录错误……
4)尝试使用“eclipse -consoleLog”运行
PS我还没有尝试过你的步骤,但以上是过去曾经咬过我的东西的列表(其中2是最常见的)… 🙂
我认为你的程序工作正常,但你没有看到任何东西,因为输出不是指向任何地方。 请编辑文件eclipse.ini并在vmargs之前添加两个选项:
-安慰
-consoleLog
然后在文件夹中打开一个终端/命令解释器并执行:
日食
然后看看是否仍然没有输出。