使用java web start启动eclipse RCP应用程序时无法获得启动画面

时间:2014-01-16 16:14:03

标签: java eclipse osgi java-web-start splash-screen

我的应用程序eclipse Java应用程序。我正在使用myapp.jnlp文件启动它。 在单击myapp.jnlp文件时,它将完美地启动Java应用程序。 现在我想添加两个启动画面,包括javaws应用程序启动画面和eclipse equinox启动器应用程序启动画面。我成功通过在myapp.jnlp文件中添加以下行来在javaws应用程序上应用启动画面。               现在我想在java应用程序中添加启动画面,直到我得到我的应用程序的UI,所以我参考以下链接。

Kai's blog

Eclipse Bugs

我已经在我的jnlp文件中正确地执行了所有步骤并正确定义了属性。 我反对的属性如下:

仍然无法启动启动画面。

我还定义了属性@ user.home,其值为" C:\ myhome"

当我打开osgi.install.area意味着位置" C:\ myhome \ abc \ workspace \ osgi"我发现它是空白的。

我怀疑我在java应用程序中进行了混淆。

  • 这会导致任何问题吗?
  • 使用反射在java中使用equinox.launcher启动画面吗?

这个疑问的原因是当我打开location @ user.home \ abc \ workspace时,我发现异常

org.osgi.framework.BundleException: State change in progress for bundle "initial@reference:file:../../../../Users/Ajay/AppData/LocalLow/Sun/Java/Deployment/cache/6.0/25/6e811f29-3354dccb/" by thread "javawsApplicationMain".
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.beginStateChange(AbstractBundle.java:1077)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:282)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:417)
    at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:265)
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:106)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:453)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)

这是我无法获得启动画面的原因。

1 个答案:

答案 0 :(得分:0)

我找到了问题的解决方案。如果我们通过jar cmdlet创建一个jar,它会删除现有的MANIFEST.MF文件并生成一个新的MANIFEST.MF。由于上述行为,equinox.launcher插件无法找到相应的平台插件。

为了解决这个问题,我们使用zip cmdlet来创建jar,并且启动画面工作正常。