捆绑XYZ无法解决.原因:缺少约束:导入包:ABC; 无头RCP独立版本中的版本="1.0.0"错误

pro*_*eek 13 java eclipse eclipse-rcp headless-rcp

我正在研究独立的无头RCP.当我在eclipse IDE中执行应用程序和产品时它没有问题,但是当我导出并执行它时,我在日志文件中得到了这个错误.

在此输入图像描述

!ENTRY org.eclipse.equinox.ds 4 0 2013-01-16 13:27:59.132
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: The bundle "org.eclipse.equinox.ds_1.4.0.v20120522-1841 [3]" could not be resolved. Reason: Missing Constraint: Import-Package: org.eclipse.equinox.internal.util.event; version="1.0.0"
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
...

!ENTRY org.eclipse.equinox.ds 4 0 2013-01-16 13:28:00.901
!MESSAGE [SCR] Exception while activating instance org.eclipse.e4.ui.css.swt.internal.theme.ThemeEngineManager@6b8d6157 of component org.eclipse.e4.ui.css.swt.theme  
!STACK 0
java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Display
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
Run Code Online (Sandbox Code Playgroud)

参考这篇文章,我知道我有一个没有依赖项的插件的新版本,并且运行时路径中有一些错误.但是,我不确定可能导致此错误的原因.

可能有什么问题?为什么我只有在独立执行时才会出现此错误?

添加

我有build.properties文件

output.. = bin/
bin.includes = META-INF/,\
               plugin.xml,\
               .
source.. = src/
Run Code Online (Sandbox Code Playgroud)

这是MANIFEST.MF文件

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Refactorer
Bundle-SymbolicName: edu.utexas.seal.refactorer;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: edu.utexas.seal.refactorer.Activator
Bundle-Vendor: PROSSEEK
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
 org.eclipse.jdt;bundle-version="3.8.0",
 org.eclipse.jdt.core;bundle-version="3.8.2",
 org.eclipse.core.resources;bundle-version="3.8.1",
 org.eclipse.text;bundle-version="3.5.200",
 org.eclipse.jdt.ui;bundle-version="3.8.1",
 org.eclipse.jdt.core.manipulation;bundle-version="1.5.0",
 org.eclipse.ltk.ui.refactoring;bundle-version="3.7.0",
 org.eclipse.jdt.core.manipulation;bundle-version="1.5.0",
 org.eclipse.ltk.core.refactoring;bundle-version="3.6.0",
 org.eclipse.jface.text;bundle-version="3.8.1",
 org.eclipse.core.expressions;bundle-version="3.4.401",
 org.eclipse.core.externaltools;bundle-version="1.0.100",
 org.eclipse.jface;bundle-version="3.8.101",
 edu.utexas.seal.utilities;bundle-version="1.0.0",
 org.eclipse.core.filebuffers;bundle-version="3.5.200"
Bundle-ClassPath: .
Export-Package: edu.utexas.seal.refactorer
Run Code Online (Sandbox Code Playgroud)

我只有一个项目:"." 在Bundle-ClassPath中.

pro*_*eek 7

缺少org.eclipse.equinox.util

我首先重新编译了项目,然后检查了我在日志文件中的投诉中所有必需的插件,然后我发现我错过了org.eclipse.equinox.util,我想它应该已经自动包含了.在包含之后,一些错误就消失了,我发现我还有两个错误.

在此输入图像描述

执行环境问题

我将"执行环境"设置为JavaSE-1.5,这是一个问题,因为Java无法识别@Override导致"必须覆盖超类方法"错误.

在此输入图像描述 在此输入图像描述

我从这个网站得到了一个提示.

将项目导入Eclipse后,"必须覆盖超类方法"错误

运行时级别

我还必须更改/ECLIPSE/configuration/config.ini文件.

osgi.bundles=org.eclipse.equinox.common@2:start,org.eclipse.update.configurator@3:
start,org.eclipse.equinox.ds@3 <-- (From 2 to 3) 
:start,org.eclipse.core.runtime@start
Run Code Online (Sandbox Code Playgroud)

我不知道它是否是日食错误,我从这个网站得到了一个暗示.

我发现一些有用的提示

  • -consoleLog 非常有用,因为我不必一直打开日志文件.
  • 这篇文章给了我一些指导如何解决这个问题的方法.
  • 我想一旦eclipse RCP正在使用eclipse IDE作为产品,我们应该开始使用独立的RCP.如果没有,问题应该是在IDE和独立版之间产生差异的配置问题.