微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 openjdk11

如何解决使用 openjdk11

我正在将我们的应用程序迁移到 openjdk11,通过此设置,我的应用程序抛出以下错误。 请对此提供帮助 注意:使用 Jdk 1.8,相同的代码和配置工作正常。 Java 版本:openjdk 11 Springboot-hadoop : 2.4.0 发布

应用属性

        spring.hadoop.fsshell.enabled=false
        #hadoop security properties
        hadoop.config.key=hadoop.security.authentication
        hadoop.config.value=Kerberos
        #Hive connection properties
        hive.datasource.keytab=/config/security/sit.001.keytab
        hive.datasource.drivername=org.apache.hive.jdbc.HiveDriver
        hive.datasource.username=ssit.001
        #hive.datasource.password=password
        hive.truststore.file=/config/security/hivetrust.jks
        hive.krb5.conf=/config/security/krb5.conf
        hive.datasource.url=url
        hive.krb5.conf.debug.prop=sun.security.krb5.debug
        hive.krb5.conf.isdebug=true
            

Java 变化

@Value("${hive.datasource.drivername}")
        private String driverName;
    
        @Value("${hive.datasource.url}")
        private String jdbcUrl;
    
        @Value("${hive.datasource.username}")
        private String userId;
    
        @Value("${hive.datasource.keytab}")
        private String keytab;
    
        @Value("${hive.krb5.conf}")
        private String kerberosConf;
    
        @Value("${hadoop.config.key}")
        public String hadoopConfigKey;
    
        @Value("${hadoop.config.value}")
        public String hadoopConfigValue;
    
        @Bean(name = "hiveDS")
        public DataSource configureHiveDataSource() throws IOException,ClassNotFoundException,sqlException {
            Connection con = null;
    
            // System.setProperty("hadoop.home.dir",hadoopHome);
            System.setProperty("javax.security.auth.useSubjectCredsOnly","false");
            System.setProperty("java.security.krb5.conf",kerberosConf);
            org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();
            conf.set(hadoopConfigKey,hadoopConfigValue);
            UserGroupinformation.setConfiguration(conf);
            UserGroupinformation.loginUserFromKeytab(userId,keytab);
    
            Class.forName(driverName);
    
            con = DriverManager.getConnection(jdbcUrl);
            LOGGER.info("Hive Db Connected");
    
            DriverManagerDataSource dataSource = new DriverManagerDataSource();
            dataSource.setDriverClassName(driverName);
            dataSource.setUrl(jdbcUrl);
            return dataSource;
        }
        
        @Bean(name = "hiveJdbc")
        public JdbcTemplate getHiveJdbcTemplate(@Qualifier("hiveDS") DataSource hiveDS) {
            return new JdbcTemplate(hiveDS);
        }
        
        @Bean(name = "hiveNamedJdbc")
        public NamedParameterJdbcTemplate getHiveNamedJdbcTemplate(@Qualifier("hiveDS") DataSource hiveNamedDS) {
            return new NamedParameterJdbcTemplate(hiveNamedDS);
        }
    }
    

2021-04-28T21:18:18.829+0530 [main] ERROR o.s.d.h.c.c.a.AbstractConfiguredAnnotationBuilder - 无法执行构建。返回空值 java.lang.IllegalArgumentException:Bean 名称不能为空 在 org.springframework.util.Assert.notNull(Assert.java:201) 在类路径资源中定义名称为“hadoopConfiguration”的 bean 创建时出错 [org/springframework/data/hadoop/config/annotation/configuration/SpringHadoopConfiguration.class]:通过工厂方法实例化 Bean 失败;嵌套异常是 **org.springframework.beans.BeanInstantiationException:无法实例化 **[org.apache.hadoop.conf.Configuration]:工厂方法“配置”抛出异常;嵌套异常是 java.lang.NullPointerException

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。