当前位置: 首页 > 工具软件 > Equinox > 使用案例 >

运行Equinox控制台报错Could not find bundle: org.eclipse.equinox.console

韩宏朗
2023-12-01

           我对Java的每一种技术都感兴趣,尤其是在了解到OSGi时,虽然这几年无人问津,但是我决定去学习一下,买了一本周志明编著的《深入理解OSGi---Equinox原理、应用于最佳实践》一书,在看到第三章时,书上说要运行本节的例子请先看第5章将Equinox的开发环境搭建好,书中例举了三种不同环境搭建方案;最简单的一种是安装好jdk和eclipse,然后在eclipse的安装目录下的plugins目录下进入命令提示符(cmd),输入

     

      >java  -jar  org.eclipse.osgi_3.10.2.v20150203-1939.jar  -console

     

      按理说,根据书中例子正常的话,屏幕会出现Equinox OSGi控制台的提示符“osgi>",但是我的屏幕没有反应,并且我注意到plugins目录下新生成一个configuration目录,目录里面有日志文件,打开日志提示报错信息如下:

!SESSION 2018-01-10 15:52:00.547-----------------------------------------------
eclipse.buildId=unknown
java.version=1.8.0_151
java.vendor=Oracle Corporation
BootLoader constants:OS=win32,ARCH=x86_64,WS=win32,NL=zh_CN
Command-line arguments:-console

!ENTRY org.eclipse.osgi 4 0 2018-01-10 15:52:01.385
!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.core.runtime.internal.adaptor.ConsoleManager.checkForConsoleBundle(ConsoleManager.java:58)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:331)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:231)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.main(EclipseStarter.java:208)

!ENTRY org.eclipse.osgi 4 0 2018-01-10 15:52:01.397
!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:78)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.main(EclipseStarter.java:208)

           

       我的eclipse版本为

       Version: Luna Service Release 2 (4.4.2)
       Build id: 20150219-0600

     

       在网上搜索一番得知新版本Equinox osgi shell已被felix gogo shell代替,如果要在新版本中使用控制台,那就要替换gogo 的jar包,并且要在配置文件中定义。书上的eclipse版本为3.x,所以没有这个问题,如果你出现和我一样的问题,一起按照如下步骤改一下吧:

    

       刚才不是在plugins目录下生成一个configuration目录嘛,紧接着在configuration目录下新建一个config.ini,或者将和plugins目录平级的configuration目录下的config.ini拷贝过来,将两个config.ini里面的osgi.bundles修改为如下,我贴一下整个config.ini整个内容:

#This configuration file was written by: org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxFwConfigFileParser
#Wed Jan 10 12:58:09 CST 2018
org.eclipse.update.reconcile=false
eclipse.p2.profile=epp.package.java
osgi.instance.area.default=@user.home/workspace
osgi.framework=file\:plugins/org.eclipse.osgi_3.10.2.v20150203-1939.jar
equinox.use.ds=true
eclipse.buildId=4.4.2.M20150204-1700
#将原来的注释掉,其他属性不要动
#osgi.bundles=reference\:file\:org.eclipse.equinox.simpleconfigurator_1.1.0.v20131217-1203.jar@1\:start
#这是最新的,注意jar包版本号要改成你自己的,这些jar可以在plugins目录下搜到
osgi.bundles=file\:org.eclipse.equinox.console_1.1.0.v20140131-1639.jar@start,file:\org.apache.felix.gogo.command_0.10.0.v201209301215.jar@start,file:\org.apache.felix.gogo.runtime_0.10.0.v201209301036.jar@start,file:\org.apache.felix.gogo.shell_0.10.0.v201212101605.jar@start

org.eclipse.equinox.simpleconfigurator.configUrl=file\:org.eclipse.equinox.simpleconfigurator/bundles.info

eclipse.product=org.eclipse.platform.ide

osgi.splashPath=platform\:/base/plugins/org.eclipse.platform

osgi.framework.extensions=reference\:file\:org.eclipse.osgi.compatibility.state_1.0.1.v20140709-1414.jar

osgi.bundles.defaultStartLevel=4

eclipse.p2.data.area=@config.dir/../p2/

eclipse.application=org.eclipse.ui.ide.workbench

    

    改完后,保存,重新打开cmd命令行,再输入就OK了

  参考地址:https://stackoverflow.com/questions/11161871/org-osgi-framework-bundleexception-could-not-find-bundle-org-eclipse-equinox-c

                       

 类似资料: