Sea*_*son 8 java spring dependency-injection java-5 java-6
我们的情况是,我们的Spring连接了一些包含使用Java 6构建的ActiveMQ类的bean.我们的应用程序在客户的服务器上运行,因此我们无法保证它们安装了Java 6或更高版本.如果它们恰好具有Java 5,则应用程序无法启动,因为BeanCreationException具有依赖于ActiveMQ的类的s(根本原因是a UnsupportedClassVersionError).
所以我的问题是,有没有办法忽略a BeanCreationException仍然启动应用程序?我希望能够显示一条错误消息,说明他们需要安装Java 6或更高版本,但由于应用程序甚至无法启动,我从来没有机会这样做.
我的预感是没有办法做到这一点,因为Spring需要能够保证我的应用程序在初始化后正确构建,但我想我还是会问.关于如何实现我的最终目标的任何其他建议也将有所帮助和赞赏.
我们正在使用Spring 3.0.6
谢谢!
首先,任何属于 的子类的可抛出对象java.lang.Error通常被认为是不可恢复的。因此,虽然有可能捕获它们,但强烈建议不要这样做:
An
Error是其子类Throwable,表示合理的应用程序不应尝试捕获的严重问题。大多数此类错误都是异常情况。
但是,如果您要做的只是显示一条错误消息,那么您应该能够摆脱它。
所以回到你的问题,我建议创建一个Spring 接口的实现FactoryBean,它将尝试加载 ActiveMQ 类。如果它有效,那么它可以从 中返回适当的对象FactoryBean.getObject。如果失败(通过 catch UnsupportedClassVersionError),则它可以返回 anull或表示该条件的其他对象。
| 归档时间: |
|
| 查看次数: |
2911 次 |
| 最近记录: |