org.osgi.framework.BundleException:找不到包:org.eclipse.equinox.console
Posted
技术标签:
【中文标题】org.osgi.framework.BundleException:找不到包:org.eclipse.equinox.console【英文标题】:org.osgi.framework.BundleException: Could not find bundle: org.eclipse.equinox.console 【发布时间】:2012-06-25 02:05:50 【问题描述】:命令:
\eclipse-SDK-4.2RC3-win32-x86_64_001\eclipse\plugins>java -jar org.eclipse.osgi_3.8.0.v20120529-1548.jar -console
异常(来自日志文件)
!SESSION 2012-06-22 23:36:27.649 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0_25
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Command-line arguments: -console
!ENTRY org.eclipse.osgi 4 0 2012-06-22 23:36:28.632
!MESSAGE Could not find bundle: org.eclipse.equinox.console
!STACK 0
org.osgi.framework.BundleException: Could not find bundle: org.eclipse.equinox.console
at org.eclipse.osgi.framework.internal.core.ConsoleManager.checkForConsoleBundle(ConsoleManager.java:211)
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:297)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
at org.eclipse.core.runtime.adaptor.EclipseStarter.main(EclipseStarter.java:151)
!ENTRY org.eclipse.osgi 4 0 2012-06-22 23:36:28.663
!MESSAGE Application error
!STACK 1
java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at org.eclipse.core.runtime.adaptor.EclipseStarter.main(EclipseStarter.java:151)
但是下面的 jar 是可用的。
org.eclipse.equinox.console_1.0.0.v20120522-1841.jar
对上述错误有什么建议吗?
【问题讨论】:
这可能对digizol.com/2013/11/…有帮助 【参考方案1】:您需要安装几个捆绑软件才能使用控制台,如果您仅使用 java -jar ...
启动 Equinox,那么您将无法获得这些捆绑软件。
完成这项工作的最快方法是创建一个名为 configuration/config.ini
的文件,其内容如下:
osgi.bundles=file\:org.eclipse.equinox.console_1.0.0.v20111215-1210.jar@start,file:\org.apache.felix.gogo.runtime_0.8.0.v201108120515.jar@start,file:\org.apache.felix.gogo.shell_0.8.0.v201110170705.jar@start
注意您必须对照您实际拥有的版本查看这些捆绑包的版本号。我用 SDK-4.2M6 试过这个,可能其中一些在 RC3 中发生了变化。
【讨论】:
谢谢!你拯救了我的周末!【参考方案2】:在新版本的 Equinox 中,内置的 OSGi shell 已替换为 felix gogo shell。如果你想使用新的 shell,你必须放置 gogo jars,并在你的配置文件中定义它们。
但是,如果您喜欢 OSGi Equinox shell,您只需在您的 config.ini
文件中添加以下行即可使用它:osgi.console.enable.builtin=true
。在这种情况下,无需添加额外的 jar 或任何配置。
【讨论】:
根据Virtage Devblog,此属性也可以添加为系统属性,例如"-Dosgi.console.enable.builtin=true" 这在 Eclipse Kepler 上对我有用,将其作为 VM 参数添加到运行配置中,但在尝试从 Eclipse 外部运行时不起作用(在这种情况下,接受的答案正常)。【参考方案3】:我在 Ubuntu Linux 上使用 Eclipse Helios 和 Eclipse Juno。我在 Eclipse Juno 上遇到了同样的错误,我无法启动 Eclipse。 我不知道如何,但我的 Java 版本降低到了 1.5,这导致了问题。
在 Eclipse Helios 中,Java 1.5 引起了问题,但我能够启动 Eclipse。 Eclipse Helios 出现的错误是:
An internal error occurred during: "Loading Web Service DOM...".
org.eclipse.emf.ecore.util.EcoreEMap$DelegateEObjectContainmentEList
将 Java 版本更新到 1.7 解决了该问题。我猜 Eclipse Juno 不适用于 Java 1.5 :)
【讨论】:
【参考方案4】:我遇到了同样的问题,我尝试在 config.ini 文件中添加 osgi.console.enable.builtin=true
,但似乎每次我运行项目时都会重新创建文件,我解决问题的方式是运行配置 --> 参数选项卡添加虚拟机参数中的-Dosgi.console.enable.builtin=true
【讨论】:
【参考方案5】:这是因为 Eclipse 的默认 shell 已移至“Apache Felix Gogo”;因此必须在运行前将必要的捆绑包添加到“运行配置”中。以下是您需要从列表中选择的四个捆绑:
org.apache.felix.gogo.command_0.10.0v<version>.jar
org.apache.felix.gogo.runtime_0.10.0v<version>.jar
org.apache.felix.gogo.shell_0.10.0v<version>.jar
org.eclipse.equinox.console_1.0.100<version>.jar
如上图所示添加这些后,程序运行流畅。
参考:http://www.digizol.com/2013/11/Eclipse-org-osgi-framework-BundleException-equinox-console.html
【讨论】:
【参考方案6】:尝试使用新的工作区。要强制工作区窗口提示,您需要更改Eclipse_root_dir\configuration\.settings\org.eclipse.ui.ide.prefs
中的设置并将SHOW_WORKSPACE_SELECTION_DIALOG
设置为true
【讨论】:
【参考方案7】:其中一个变体是选择另一个 java 版本(较旧的默认版本),eclipse 旧版本在尝试在 java 9 错误上运行时出错强>
sudo update-alternatives --config java
我选择了 java 8 并且一切正常
【讨论】:
【参考方案8】:转到Eclipse_root_dir\configuration\.settings\org.eclipse.ui.ide.prefs
并将RECENT_WORKSPACES
的路径更改为其他路径。
【讨论】:
这个问题已经很老了,已经有一个公认的答案。您的回答没有说明任何新内容。以上是关于org.osgi.framework.BundleException:找不到包:org.eclipse.equinox.console的主要内容,如果未能解决你的问题,请参考以下文章