The bundle XYZ could not resolved. Reason: Missing Constraint: Import-Package: ABC; version=“1.0.0” error in headless RCP standalone
我正在研究独立的无头RCP。当我在EclipseIDE中执行应用程序和产品时,它毫无问题地工作,但是当我导出和执行它时,我在日志文件中得到了这个错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | !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) |
参考本文,我了解到我有一个没有依赖项的插件的更新版本,并且运行时路径中有一些错误。但是,我不确定究竟是什么导致了这个错误。
可能有什么问题?为什么只有当我以独立方式执行时才会出现此错误?
补充我有build.properties文件
1 2 3 4 5 | output.. = bin/ bin.includes = META-INF/,\ plugin.xml,\ . source.. = src/ |
这是manifest.mf文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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 |
我在bundle类路径中只有一个项目:""。
缺少org.eclipse.equinox.util
我先重新编译了这个项目,然后检查了日志文件中投诉的所有插件,然后我发现我丢失了
我将JavaSe1.5设置为"执行环境",这是一个问题,因为Java无法识别@重写,导致"必须重写超类方法"错误。
我从这个网站得到了提示。
将项目导入Eclipse后,"必须重写超类方法"错误
运行时级别我还必须更改
1 2 3 | 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 |
我不知道是不是Eclipse bug,我从这个站点得到了提示。
我发现一些有用的提示-consoleLog 非常有用,因为我不必一直打开日志文件。- 这篇文章给了我一些如何解决这个问题的方向。
- 我想一旦EclipseRCP作为一个产品在EclipseIDE上工作,我们就应该开始独立的RCP工作。如果没有,问题应该是配置问题,这会使IDE和单机版之间产生差异。
还可以通过额外的依赖配置将丢失的包直接添加到失败的包中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <plugin> <groupId>org.eclipse.tycho</groupId> target-platform-configuration</artifactId> <version>${tycho.version}</version> <configuration> <dependency-resolution> <extraRequirements> <requirement> <type>eclipse-plugin</type> <id>org.eclipse.jface.text</id> <versionRange>0.0.0</versionRange> </requirement> </extraRequirements> </dependency-resolution> </configuration> </plugin> |
您需要将其添加到feature.xml文件中。添加相同的内容后,请清理项目并尝试重新生成。我相信这会解决这个问题。