在Eclipse中运行/调试OSGi应用程序

Teg*_*shi 6 eclipse osgi

我们的应用程序已迁移到OSGi,但我无法在Eclipse中启动/调试它.过程是什么:OSGi应用程序开发人员是否期望建立Equinox环境,安装数百个bundle(jar = bundle?),并从控制台启动?换句话说,推出"热插拔天赋"应用程序不同于"模块化挑战"应用程序吗?

次要的,更具体的问题.有一个引导程序包应该可以处理所有事情,但是在加载一堆类之后它会变慢并且几乎挂起:

...
...
...
Flat profile of 0.22 secs (16 total ticks): main

  Interpreted + native   Method                        
 16.7%     1  +     0    java.awt.Toolkit.addAWTEventLi[Loaded java.awt.SentEvent from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
stener
 16.7%     1  +     0    jav[Loaded java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
a.util.regex.Pattern.compile
 16.7%     1  +     0    sun.util.logging.PlatformLogger.<init>
 50.0%     3  +     0    Total interpreted

  Thread-local ticks:
 62.5%    10             Blocked (of total)
 50.0%     3             Class loader

...
...
...
[Loaded sun.reflect.Label$PatchInfo from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded sun.reflect.MethodAccessorGenerator$1 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded sun.reflect.ClassDefiner from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded sun.reflect.ClassDefiner$1 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded sun.reflect.GeneratedMethodAccessor1 from __JVM_DefineClass__]
[Dynamic-linking native method sun.java2d.DefaultDisposerRecord.invokeNativeDispose ... JNI]
[Dynamic-linking native method java.lang.ref.Finalizer.invokeFinalizeMethod ... JNI]
Run Code Online (Sandbox Code Playgroud)

编辑:自问题发布以来进展一点

[Loaded sun.reflect.GeneratedMethodAccessor1 from __JVM_DefineClass__]
[Dynamic-linking native method sun.java2d.DefaultDisposerRecord.invokeNativeDispose ... JNI]
[Dynamic-linking native method java.lang.ref.Finalizer.invokeFinalizeMethod ... JNI]
--- new stuff --- 
[Loaded sun.awt.windows.WComponentPeer$2 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Dynamic-linking native method sun.awt.windows.WInputMethod.disableNativeIME ... JNI]
Run Code Online (Sandbox Code Playgroud)

因此,这不是一个僵局,是什么可能使它如此令人难以置信的缓慢?

Hol*_*ins 5

在Eclipse中启动和调试应该是相当明确的.诀窍(在我看来)是要意识到你需要的所有Eclipse支持都标记为"插件"而不是"OSGi".使用您需要的所有外部包设置目标平台 - 您可以将它们转储到目录中,然后将目标平台配置器指向该文件夹.目标平台配置位于Preferences-> Plug-in Development-> Target Platform下.您可以将目标平台共享为.target文件.拥有一个好的目标平台有助于运行和编译.

要运行捆绑包,请右键单击并选择Run as - > OSGi Framework(或debug as).您可以调整运行时配置中包含的捆绑包以及使用的参数.例如,您可以添加-console.您还可以创建一个导出应用程序,它将为您提供一个config.ini文件.一旦你有了config.ini,你的捆绑包将预装在Equinox初创公司.