我从本指南开始: https://guides.micronaut.io/micronaut-function-graalvm-aws-lambda-gateway/guide/index.html 它可以工作并创建可在本地SAM实例中部署的API。
在我的真实项目中,我需要访问JPA数据库,因此我在build.gradle中添加了引用:
compile group: 'com.oracle.ojdbc', name: 'ojdbc8', version: '19.3.0.0'
implementation("io.micronaut.configuration:micronaut-jdbc-hikari")
implementation( "io.micronaut.data:micronaut-data-hibernate-jpa:1.0.0.M5")
annotationProcessor("io.micronaut.data:micronaut-data-processor:1.0.0.M5")
还添加CRUD所需的TypeHint和ojdbc所需的反射信息; https://github.com/oracle/graal/issues/1748#issuecomment-542353582 https://micronaut-projects.github.io/micronaut-data/latest/guide/#graalJPA
在graal版本的编写阶段,我得到以下错误:
error: Classes that should be initialized at run time got initialized during image building:
org.jboss.logging.Logger was unintentionally initialized at build time ...
org.hibernate.internal.CoreMessageLogger_$logger was unintentionally initialized at build time...
等,Hibernate尝试实例化的多个记录器。
这是一个示例,在我的真实项目中,我与数据库和CRUD的连接都实现了相同的错误。在示例中,为了重现,我没有添加这些内容。