【问题标题】:Unable to start RCP Eclipse 4.4.2 application with Java 1.8 on Linux x86_64无法在 Linux x86_64 上使用 Java 1.8 启动 RCP Eclipse 4.4.2 应用程序
【发布时间】:2015-06-04 16:19:51
【问题描述】:

我们在 Eclipse 3.7.2 和 Java 1.7 中开发了一个基于 RCP eclipse 插件的 UI 控制台。我们将它移植到带有 Java 1.8 的 Eclipse 4.4.2。我们无法在 Linux x86_64 上使用 Java 1.8 启动 RCP Eclipse 4.4.2 应用程序。当我们尝试启动应用程序时,应用程序在显示初始屏幕后崩溃,并弹出一个提示已创建日志的消息。请在下面找到日志文件的 sn-p:

!ENTRY org.eclipse.osgi 4 0 2015-06-04 21:27:59.594
!MESSAGE An error occurred while automatically activating bundle com.biz.client.ui (66).
!STACK 0
org.osgi.framework.BundleException: Error loading bundle activator.
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:711)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:936)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:319)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:320)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:395)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:568)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Caused by: java.lang.ClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.ui.workbench (93).
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:116)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:320)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:395)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:754)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:706)
    ... 32 more
Caused by: org.osgi.framework.BundleException: Error starting module.
    at org.eclipse.osgi.container.Module.doStart(Module.java:580)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    ... 40 more
Caused by: java.lang.NoClassDefFoundError: org/eclipse/swt/SWTError
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getConstructor0(Class.java:3075)
    at java.lang.Class.newInstance(Class.java:412)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:755)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:706)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:936)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:319)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    ... 43 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.SWTError cannot be found by org.eclipse.ui.workbench_3.106.2.v20150204-1030
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 52 more
Root exception:
java.lang.ClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.ui.workbench (93).
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:116)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:320)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:395)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:754)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:706)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:936)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:319)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:320)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:395)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:568)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Caused by: org.osgi.framework.BundleException: Error starting module.
    at org.eclipse.osgi.container.Module.doStart(Module.java:580)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    ... 40 more
Caused by: java.lang.NoClassDefFoundError: org/eclipse/swt/SWTError
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getConstructor0(Class.java:3075)
    at java.lang.Class.newInstance(Class.java:412)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:755)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:706)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:936)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:319)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    ... 43 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.SWTError cannot be found by org.eclipse.ui.workbench_3.106.2.v20150204-1030
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 52 more

!ENTRY org.eclipse.osgi 4 0 2015-06-04 21:27:59.601
!MESSAGE Application error
!STACK 1
org.eclipse.core.runtime.CoreException: Plug-in com.biz.client.ui was unable to load class com.biz.om.infra.client.ui.rcp.BLWorkbenchApplication.
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:194)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:176)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Caused by: java.lang.ClassNotFoundException: An error occurred while automatically activating bundle com.biz.client.ui (66).
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:116)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:320)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:395)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:568)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
    ... 16 more
Caused by: org.osgi.framework.BundleException: Error loading bundle activator.
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:711)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:936)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:319)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    ... 26 more
Caused by: java.lang.ClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.ui.workbench (93).
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:116)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:320)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:395)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:754)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:706)
    ... 32 more
Caused by: org.osgi.framework.BundleException: Error starting module.
    at org.eclipse.osgi.container.Module.doStart(Module.java:580)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    ... 40 more
Caused by: java.lang.NoClassDefFoundError: org/eclipse/swt/SWTError
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getConstructor0(Class.java:3075)
    at java.lang.Class.newInstance(Class.java:412)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:755)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:706)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:936)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:319)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    ... 43 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.SWTError cannot be found by org.eclipse.ui.workbench_3.106.2.v20150204-1030
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 52 more

意识到它可能正在寻找特定于平台的 swt jar 文件,我下载了 4.4.2 增量包并将文件:org.eclipse.swt.gtk.linux.x86_64_3.103.2.v20150203-1351.jar 复制到插件中文件夹。但现在我在日志文件中看到了上述消息以及以下附加消息:

!ENTRY org.eclipse.swt.gtk.linux.x86_64 2 0 2015-06-04 21:29:39.347
!MESSAGE Could not resolve module: org.eclipse.swt.gtk.linux.x86_64 [137]
  Unresolved requirement: Fragment-Host: org.eclipse.swt; bundle-version="[3.0.0,4.0.0)"

正在使用的启动器文件如下:

-data
@noDefault
-showsplash
org.eclipse.platform
-vm
/opt/biz/server/jre/bin/java
-vmargs
-Dosgi.parentClassloader=ext
-Dosgi.requiredJavaVersion=1.8
-DsuppressSwingDropSupport=true
-Djava.library.path=/opt/bmc/biz/server/lib
-Dblx.cmrootdir=/opt/bmc/biz/server/br
-Dblx.cmlibdir=/opt/bmc/biz/server/CM/rcp/plugins/com.biz.client.jars_1.0.0/lib
-Xms512m
-Xmx768m
-Djava.security.egd=file:/dev/../dev/urandom
-Dosgi.configuration.area=@user.home/.biz/8.7.00.135

它被配置为在 Windows 32 位、Windows 64 位、Linux x86、Linux x86_64 和 Solaris 上构建和运行。 biz.product 文件有以下关于 Linux 的条目

<launcherArgs>
    <programArgsLin>
        -showsplash
        org.eclipse.platform    
        -vm
        /usr/nsh/br/java/bin/java
    </programArgsLin>
    <vmArgsLin>
        -Dosgi.requiredJavaVersion=1.8  
        -DsuppressSwingDropSupport=true      
        -Djava.library.path=/usr/nsh/bin:/usr/nsh/sbin:/usr/nsh/lib
        -Dblx.cmrootdir=/usr/nsh/br
        -Dblx.cmlibdir=/usr/nsh/br/stdlib
        -Xms256m
        -Xmx512m
    </vmArgsLin>
</launcherArgs>

我无法弄清楚为什么即使添加了所需的 jar 文件也没有解决该要求。

有人遇到过这个问题吗?您能否分享任何建议/cmets/输入来解决/修复它?

谢谢, 沙市

【问题讨论】:

  • 在构建 RCP 时,是否指定它用于 Linux / GTK / 64 位?您必须为要使用的每个组合进行构建。
  • 是的。它被配置为在 Windows 32 位、Windows 64 位、Linux x86、Linux x86_64 和 Solaris 上构建和运行。它在 Java 1.8 和 Eclipse 4.4.2 升级之前成功运行。

标签: linux eclipse eclipse-plugin eclipse-rcp


【解决方案1】:

!ENTRY org.eclipse.swt.gtk.linux.x86_64 2 0 2015-06-04 21:29:39.347 !MESSAGE 无法解析模块:org.eclipse.swt.gtk.linux.x86_64 [137] 未解决的需求:Fragment-Host:org.eclipse.swt; bundle-version="[3.0.0,4.0.0)"

模块org.eclipse.swt.gtk.linux.x86_64 是一个片段包,它将平台相关的实现添加到SWT 包中。当它的主机包(名为org.eclipse.swt)丢失或版本错误时,无法解析此片段。

【讨论】:

  • 文件org.eclipse.swt_3.103.2.v20150203-1313.jar 已经存在于插件目录中。我刚刚添加了org.eclipse.swt.gtk.linux.x86_64_3.103.2.v20150203-1351.jar,想知道它是否无法找到某些特定于平台的实现。
  • 可能由于其他原因 swt 包未处于 RESOLVED 状态?
  • 您能建议一种检查 jar 状态的方法吗?关于捆绑包何时可能处于 RESOLVED 以外的状态以及可以做些什么来改变它的任何想法?任何输入/指针都会非常有帮助。
  • 日志文件是否还包含 swt 本身的条目,以 !ENTRY org.eclipse.swt_ 开头?
【解决方案2】:

将以下插件添加到 .product 文件后,应用程序开始在 Linux 上加载:

  <plugin id="com.<<our-product>>" fragment=""/>
  <plugin id="org.eclipse.core.filesystem.linux.x86" fragment="true"/>
  <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
  <plugin id="org.eclipse.core.filesystem.solaris.sparc" fragment="true"/>
  <plugin id="org.eclipse.core.filesystem.win32.x86" fragment="true"/>
  <plugin id="org.eclipse.core.net.linux.x86" fragment="true"/>
  <plugin id="org.eclipse.core.net.linux.x86_64" fragment="true"/>
  <plugin id="org.eclipse.core.net.win32.x86" fragment="true"/>
  <plugin id="org.eclipse.core.resources.win32.x86" fragment="true"/>
  <plugin id="org.eclipse.core.resources.win32.x86_64" fragment="true"/>
  <plugin id="org.eclipse.equinox.security.win32.x86" fragment="true"/>   
  <plugin id="org.eclipse.swt.gtk.linux.x86" fragment="true"/>
  <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
  <plugin id="org.eclipse.swt.gtk.solaris.sparc" fragment="true"/>
  <plugin id="org.eclipse.swt.gtk.solaris.x86" fragment="true"/>
  <plugin id="org.eclipse.swt.win32.win32.x86" fragment="true"/>

【讨论】:

    【解决方案3】:

    我有一个类似的案例和同样的错误。我的解决方案是通过在 manifest.mf 文件中添加以下两行来更改 plugin.xml,

    要求捆绑包: org.eclipse.equinox.ds, org.eclipse.help.webapp

    希望有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-09
      • 2016-05-30
      • 1970-01-01
      • 2015-02-16
      • 2018-06-20
      • 2017-10-17
      相关资源
      最近更新 更多