我正在处理仍在JDK5上运行的旧版应用程序。作为我们新要求的一部分,我们需要将其更新为JDK8。据我的理解,由于Java是向后兼容的,因此应该可以。当我使用JDK 8进行编译时,构建成功。但是在启动时,出现以下错误:
创建名称为'AuthorisationDialogController'的bean时出错 类路径资源 [com / some / application / conf / dispense / dispense-controllers.xml]:错误 设置属性值;嵌套异常为 org.springframework.beans.PropertyAccessExceptionsException: PropertyAccessExceptionsException(1个错误);嵌套的 propertyAccessExceptions是: [org.springframework.beans.TypeMismatchException:转换失败 类型的属性值 [com.some.application.dispense.context.DispenseContextImpl]至 属性的必需类型[com.some.application.admin.AdminContext] 'context']
我的依赖项如下所示:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>1.2.7</version>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymockclassextension</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.1_3</version>
</dependency>
<dependency>
<groupId>com.micros</groupId>
<artifactId>aaaa</artifactId>
<version>${externalVendor}</version>
</dependency>
<dependency>
<groupId>com.micros</groupId>
<artifactId>bbb</artifactId>
<version>${externalVendor}</version>
</dependency>
<dependency>
<groupId>com.micros</groupId>
<artifactId>ccc</artifactId>
<version>${externalVendor}</version>
</dependency>
<dependency>
<groupId>com.micros</groupId>
<artifactId>ddd</artifactId>
<version>${externalVendor}</version>
</dependency>
<dependency>
<groupId>com.micros</groupId>
<artifactId>eeee</artifactId>
<version>${externalVendor}</version>
</dependency>
</dependencies>
我搜索了一下,发现Spring1.2.6可能不支持JDK8。请任何人能帮助我在这里我需要照顾的所有事情。我们还依赖于一些基于Java5构建的外部供应商。
答案 0 :(得分:0)
如果Spring是一个图书馆,那么您将会看到成功。不是,它是一个框架。
这意味着Spring框架需要了解提供逻辑的插件,这些逻辑可以解决程序所解决的其余“问题”。为了进行正确的注入和接线,Spring使用了库来检查和配置编写为由Spring管理的插件。
这些库对插件进行反射和字节代码处理。这意味着Spring框架需要理解Java 8字节码。您的Spring版本没有。为了获得一个能做到的Spring,您将更新Spring的Apache Maven依赖项;但这会触发需要更新插件以使其在新的Spring版本中正常运行的需求。
简而言之,您将不得不将更多依赖项迁移到较新版本以支持Java 8。
框架可以很棒,因为它们可以节省很多时间;但是,存在软件体系结构风险。如果框架需要更新,则所有插件组件可能都需要修改才能迁移到新版本。春天也不例外。
这就是为什么有些人更喜欢利用库的原因;但是,库并不是万能的,因为您经常需要决定如何集成它们(这意味着您正在编写自己的框架,但是比其他人的框架更容易控制向前迁移)。