有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mysql Spring,AWS,访问远程数据库:java。lang.AbstractMethodError:在组织中为空。springframework。果心命令比较器。findOrder(OrderComparator.java:142)

Spring boot:我正在尝试访问AWS上的MySQL数据库

它与本地数据库配合良好,我可以通过MySQL Workbench连接到AWS上的MySQL数据库。 现在,我正在尝试启动本地应用程序以连接AWS上的远程DB,并出现以下错误:

java.lang.AbstractMethodError: null
at org.springframework.core.OrderComparator.findOrder(OrderComparator.java:142) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.core.annotation.AnnotationAwareOrderComparator.findOrder(AnnotationAwareOrderComparator.java:65) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.core.OrderComparator.getOrder(OrderComparator.java:125) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.core.OrderComparator.getOrder(OrderComparator.java:113) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.core.OrderComparator.doCompare(OrderComparator.java:82) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.core.OrderComparator.compare(OrderComparator.java:68) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:360) ~[na:na]
at java.base/java.util.TimSort.sort(TimSort.java:220) ~[na:na]
at java.base/java.util.Arrays.sort(Arrays.java:1514) ~[na:na]
at java.base/java.util.ArrayList.sort(ArrayList.java:1585) ~[na:na]
at org.springframework.boot.SpringApplication.asUnmodifiableOrderedSet(SpringApplication.java:1344) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.springframework.boot.SpringApplication.getListeners(SpringApplication.java:1253) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.springframework.boot.context.event.EventPublishingRunListener.contextLoaded(EventPublishingRunListener.java:85) ~[spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.springframework.boot.SpringApplicationRunListeners.contextLoaded(SpringApplicationRunListeners.java:66) ~[spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:408) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:331) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1277) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1265) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at com.xxsc.myapp.MyAppApplication.main(MyAppApplication.java:23) [classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-2.0.5.RELEASE.jar:2.0.5.RELEASE]

我的pom。xml:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-context</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>       
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-aws-jdbc</artifactId>
    </dependency>

我的申请。属性:

spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.thymeleaf.cache = false

我的申请书。爪哇

@SpringBootApplication
@EnableRdsInstance(databaseName="xxx", dbInstanceIdentifier="xxx", username="xxx", password="xxx")
@EnableContextRegion(region="xxx")
@EnableContextCredentials(accessKey="xxx", secretKey="xxx")
public class MyAppApplication {
public static void main(String[] args) {
    SpringApplication.run(MyAppApplication.class, args);
}
@Bean
public RdsInstanceConfigurer instanceConfigurer() {
    return new RdsInstanceConfigurer() {

        @Override
        public DataSourceFactory getDataSourceFactory() {
            TomcatJdbcDataSourceFactory dataSourceFactory = new TomcatJdbcDataSourceFactory();

            dataSourceFactory.setInitialSize(2);
            dataSourceFactory.setMaxActive(15);
            dataSourceFactory.setValidationQuery("SELECT 1");
            dataSourceFactory.setTestOnBorrow(true);

            return dataSourceFactory;
        }
    };
}

}


共 (1) 个答案

  1. # 1 楼答案

    我使用了错误的依赖项,应该是:

    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-aws-context</artifactId>
    </dependency>
    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-aws-jdbc</artifactId>
    </dependency>       
    

    在应用程序中。我需要使用的属性

    spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect. 
    

    (亚马逊t2.micro上MySql的默认版本是l5.6)

    这对我有用

    顺便说一句,我需要在我的安全凭据下创建一个帐户,该凭据来自一个拥有AmazonRDSFullAccess权限的组