我继承的基于OSGi的应用程序使用org.springframework.osgi.extender包版本1.2.1。 目前,我使用的是Java 1.7和Spring 2.5.6。
我最近在我的机器上安装了Java 8,并且由于以下错误,org.springframework.osgi.extender软件包不再启动:
org.osgi.framework.BundleException: Activator start error in bundle org.springframework.osgi.extender [21].
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2196)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2064)
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:955)
at org.apache.felix.shell.impl.StartCommandImpl.execute(StartCommandImpl.java:114)
at org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Activator.java:249)
at org.apache.felix.shell.tui.Activator$ShellTuiRunnable.run(Activator.java:184)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: Cannot create ConcurrentHashMap - neither JDK 1.5 nor backport-concurrent available on the classpath
at org.springframework.core.CollectionFactory.createConcurrentMap(CollectionFactory.java:229)
at org.springframework.osgi.extender.internal.activator.ContextLoaderListener.<init>(ContextLoaderListener.java:332)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:4336)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2141)
... 6 more
java.lang.IllegalStateException: Cannot create ConcurrentHashMap - neither JDK 1.5 nor backport-concurrent available on the classpath
我打算将Spring升级到4.0.3,但我注意到org.springframework.core.CollectionFactory.createConcurrentMap()方法已被弃用并删除。
Spring GS是否可以升级到Spring 4。*?
答案 0 :(得分:2)
Spring GS是否可以升级到Spring 4。*?
没有。 Spring从4.0开始就停止支持OSGi,这是正确的决定。 Spring的概念不适合OSGi。
请参阅http://blog.osgi.org/2014/09/how-should-i-use-guicespringblueprint.html
答案 1 :(得分:0)
Spring DM移动了,现在是Gemini Blueprint:https://projects.eclipse.org/projects/rt.gemini.blueprint
2009年底,作为Gemini项目提案的成员,SpringSource 贡献了Spring Dynamic Modules(也称为Spring OSGi)项目 到Eclipse Foundation。 Spring DM v2代码库已被移至 Eclipse.org及其问题跟踪器和论坛。该项目成了 根据Apache许可证和EPL双重许可。虽然名字有 改变了,代码和它的功能保持不变。现有 Spring DM应用程序可以轻松迁移到Eclipse Gemini 迁移指南中提到的蓝图。而项目名称 已经改变(到Eclipse Gemini Blueprint)并做出了重大努力 是为了在项目文件和资源中反映这一点, 可能有一些我们错过的地方;如果你找到了,请 向我们报告。
您可以在Spring 3.2中使用Gemini Blueprint,不支持4.0,据我所知,它尚未计划用于Gemini Blueprint的2.0版本。
答案 2 :(得分:0)
正如旧帖中已经提到的,Spring DM现在是一个Eclipse项目,Gemini Blueprint:
https://www.eclipse.org/gemini/blueprint/
这是一个相关的论坛帖子,表明Spring 4的支持正在进行中:
https://www.eclipse.org/forums/index.php/t/642416/
快照可以在这里下载:
https://repo.eclipse.org/content/repositories/gemini-blueprint-snapshots
如果您正在寻找Spring 4 OSGi捆绑包,请继续Apache ServiceMix,并可在此处下载:
http://repo1.maven.org/maven2/org/apache/servicemix/bundles/