如何使简化的RCP应用程序真正独立?

时间:2013-12-19 19:21:33

标签: java eclipse eclipse-rcp

这是my old question对新知识水平的全面重构。

问题摘要

我的日食产品无效。是否需要任何其他功能?

创建简单的RCP应用程序

enter image description here enter image description here enter image description here

此时所有向导功能都被禁用,我按下Finish按钮。因此,Eclipse仅使用MANIFEST.MFbuild.properties文件创建几乎为空的项目。

enter image description here

现在我正在创建一个应用程序。应用程序是org.eclipse.core.runtime.applications扩展点的扩展,它在org.eclipse.core.runtime插件中实现。所以我将此插件添加为依赖项:

enter image description here

这会在Package Explorer中创建一个名为Plug-in Dependencies的新节点:

enter image description here

现在我在插件中添加了新的扩展名:

enter image description here

我正在为我的应用程序提供一个ID myappid并为其分配一个班级myproject.Application

这会创建一个文件plugin.xml

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         id="myappid"
         point="org.eclipse.core.runtime.applications">
      <application
            cardinality="singleton-global"
            thread="main"
            visible="true">
         <run
               class="myproject.Application">
         </run>
      </application>
   </extension>

</plugin>

包含所有这些信息。此文件也来自build.properties

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

同时MANIFEST.MF变为无效,因为它现在必须是单身,可以自动设置,也可以通过Overview标签中的复选框设置:

enter image description here

请注意,虽然我的应用程序ID为myappid,但此名称并非完全限定。完全限定名称出现在插件ID之间的连接中,这是。就我而言,它是myproject.myappid

现在我将(返回)清单编辑器的Extensions标签,并通过点击class超链接创建应用程序的类文件:

enter image description here

这会调用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控制台视图中进行打印。

创建产品配置

现在我正在创建一个产品配置,这是导出向导可以工作所必需的。

enter image description here enter image description here

同时创建和设置产品文件会将plugin.xml文件的扩展名添加到org.eclipse.core.runtime.products扩展点。

在产品文件编辑器的Overview标签上,按New按钮,调出New Product Definition窗口:

enter image description here

我填写了新的产品名称,产品ID和推荐的应用程序,这是我之前获得的完全限定名称。

现在我的plugin.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         id="myappid"
         point="org.eclipse.core.runtime.applications">
      <application
            cardinality="singleton-global"
            thread="main"
            visible="true">
         <run
               class="myproject.Application">
         </run>
      </application>
   </extension>
   <extension
         id="myproductid"
         point="org.eclipse.core.runtime.products">
      <product
            application="myproject.myappid"
            name="MyProduct">
      </product>
   </extension>

</plugin>

您看到我们的产品就在那里。

现在我需要做一个我很长时间都找不到的技巧。

尽管产品文件正确引用了应用程序和插件,但它并未自动包含在产品内容中。我认为这是Eclipse的错误。

所以,我转到产品文件编辑器的Dependencies标签,然后添加我自己的插件:

enter image description here

之后,我需要按下魔术按钮Add Required Plug-ins

enter image description here enter image description here

现在,我可以从产品文件编辑器的Overview面板中运行我的应用程序,它可以按预期工作(在控制台视图中打印文本)。

导出产品

只有现在我才能使用导出向导

enter image description here enter image description here

这将创建目录D:\myproject并将所有内容放入其中。它可以通过在

中运行eclipse.exe来运行

enter image description here

不幸的是,它没有做任何事情,但是,没有例外。

问题

1)为什么导出的程序什么都不做?它需要eclipse控制台吗?或者它只是不起作用?

2)如何打印程序?是否可以像Eclipse一样提供GUI控制台?或者是否可以强制它打印到操作系统终端/控制台?

2 个答案:

答案 0 :(得分:0)

1)检查您的环境,尤其是JAVA_OPTS。如果那里有任何内容,请取消设置该变量并再次尝试运行

2)使用&#34; java -version&#34;检查路径上的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)查看文件夹&#34; configuration / .log&#34; (时间戳是UNIX很长)。有时当工作空间没有被创建时,Eclipse会在那里记录错误......

4)尝试使用&#34; eclipse -consoleLog&#34;

运行

P.S。我还没有尝试过你的步骤,但上面列出了过去曾经咬过我的东西(其中2是最常见的)......: - )

答案 1 :(得分:0)

我认为你的程序运行正常,但你没有看到任何东西,因为输出不是指向任何地方。 请编辑文件eclipse.ini并在vmargs之前添加两个选项:

  

-console

     

-consoleLog

然后在文件夹中打开一个终端/命令解释器并执行:

  

然后看看是否仍然没有输出。