ngdbc 2.3.33与JVM 8兼容吗?

2020-09-12 16:02发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在我们最近升级到HANA Exp...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在我们最近升级到HANA Express 2.0 SP03后,基于Spring Boot的模块无法再启动。

这是由于 java.lang.ClassNotFoundException:java.sql.ConnectionBuilder。导致的。在Spring创建DataSource Bean的过程中引发了异常:

无法为持久性元数据自检bean类[com.sap.db.jdbcext.DataSourceSAP]:无法找到它依赖的类
 在org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:401)〜[spring-orm-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
 在org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:333)〜[spring-orm-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:992)〜[spring-beans-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:523)〜[spring-beans-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
 ...省略了37个通用框架
 引起原因:java.lang.NoClassDefFoundError:java/sql/ConnectionBuilder
 在java.lang.Class.getDeclaredMethods0(本机方法)〜[na:1.8.0_162]
 在java.lang.Class.privateGetDeclaredMethods(Class.java:2724)〜[na:1.8.0_162]
 在java.lang.Class.getDeclaredMethods(Class.java:1998)〜[na:1.8.0_162]
 在org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613)〜[spring-core-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
 在org.springframework.util.ReflectionUtils.doWithLocalMethods(ReflectionUtils.java:489)〜[spring-core-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
 在org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.buildPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:431)〜[spring-orm-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
 在org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:397)〜[spring-orm-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
 ...省略了40个常见框架

此异常的根本原因是SP03使用的ngdbc 2.3.33中的 com.sap.db.jdbcext.DataSourceSAP.DataSourceSAP 正在实现JDBC 4.3 API(例如 com.sap.db.jdbcext.DataSourceSAP.createConnectionBuilder()或com.sap.db.jdbc.ConnectionSapDB.setShardingKey(ShardingKey))。 该API是Java 9中引入的!

由于我们正在SP03的标准JRE 8上运行,因此显然无法正常工作!

是否有解决此问题的解决方案?

作为一种解决方法,一个选择是在我们的胖子jar中提供较旧的ngdbc版本,并说服buildpack不要通过添加较新的驱动程序版本来覆盖此版本,这是当前的默认版本。 有人可以提示如何做吗?

@SAP:请提供与jre8完全兼容的ngdbc.jar!

最诚挚的问候,

Philipp

6条回答
hongfeng1314
2020-09-12 16:22

到目前为止,我还没有时间对此进行研究。

一周热门 更多>

相关问答