【发布时间】:2020-10-08 06:36:21
【问题描述】:
当我执行时: mvn clean package -Pnative -Dquarkus.native.container-build=true
我希望: 原生镜像会构建成功。
实际: 使用 quarkus 1.7.5 版,它可以按预期工作,但是 对于 1.8.0 的版本,它会失败并显示一些错误消息。
22:35:07,244 INFO [org.hib.Version] HHH000412: Hibernate ORM core version 0.0.3-SNAPSHOT
22:35:07,257 INFO [org.hib.ann.com.Version] HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
22:35:07,317 INFO [org.hib.dia.Dialect] HHH000400: Using dialect: io.quarkus.hibernate.orm.runtime.dialect.QuarkusPostgreSQL10Dialect
22:35:07,430 INFO [org.hib.orm.beans] HHH10005002: No explicit CDI BeanManager reference was passed to Hibernate, but CDI is available on the Hibernate ClassLoader.
22:35:38,532 INFO [org.jbo.threads] JBoss Threads version 3.1.1.Final
[kassa-service-0.0.3-SNAPSHOT-runner:27] (clinit): 740,93 ms, 6,20 GB
[kassa-service-0.0.3-SNAPSHOT-runner:27] (typeflow): 36.535,89 ms, 6,20 GB
[kassa-service-0.0.3-SNAPSHOT-runner:27] (objects): 60.944,79 ms, 6,20 GB
[kassa-service-0.0.3-SNAPSHOT-runner:27] (features): 1.608,81 ms, 6,20 GB
[kassa-service-0.0.3-SNAPSHOT-runner:27] analysis: 104.453,70 ms, 6,20 GB
Error: Unsupported features in 21 methods
Detailed message:
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved field during parsing: **de.lstrobel.quarkus.articles.service.persistence.ArticleKeyEntity.article**. To diagnose the issue you can use the --allow-incomplete-classpath option. The missing field is then reported at run time when it is accessed the first time.
Trace:
at parsing de.lstrobel.quarkus.articles.service.ArticleService.afterMap(ArticleService.java:31)
Call path from entry point to de.lstrobel.quarkus.articles.service.ArticleService.afterMap(ArticleTO, ArticleEntity):
at de.lstrobel.quarkus.articles.service.ArticleService.afterMap(ArticleService.java:30)
at de.lstrobel.quarkus.articles.service.ArticleService_Subclass.afterMap$$superaccessor9(ArticleService_Subclass.zig:1599)
at de.lstrobel.quarkus.articles.service.ArticleService_Subclass$$function$$9.apply(ArticleService_Subclass$$function$$9.zig:41)
at sun.security.ec.XECParameters$1.get(XECParameters.java:183)
at com.oracle.svm.core.jdk.SystemPropertiesSupport.initializeLazyValue(SystemPropertiesSupport.java:190)
at com.oracle.svm.core.jdk.SystemPropertiesSupport.getProperty(SystemPropertiesSupport.java:143)
at com.oracle.svm.core.jdk.Target_java_lang_System.getProperty(JavaLangSubstitutions.java:331)
at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_VA_LIST:Ljava_lang_System_2_0002egetProperty_00028Ljava_lang_String_2_00029Ljava_lang_String_2(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved field during parsing: de.lstrobel.quarkus.articles.service.persistence.ArticleKeyEntity.article. To diagnose the issue you can use the --allow-incomplete-classpath option. The missing field is then reported at run time when it is accessed the first time.
Trace:
at parsing de.lstrobel.quarkus.articles.service.ArticleService.findByArticleKey(ArticleService.java:56)
Call path from entry point to de.lstrobel.quarkus.articles.service.ArticleService.findByArticleKey(String):
at de.lstrobel.quarkus.articles.service.ArticleService.findByArticleKey(ArticleService.java:52)
at de.lstrobel.quarkus.articles.service.ArticleService_Subclass.findByArticleKey$$superaccessor16(ArticleService_Subclass.zig:2398)
at de.lstrobel.quarkus.articles.service.ArticleService_Subclass$$function$$16.apply(ArticleService_Subclass$$function$$16.zig:33)
at sun.security.ec.XECParameters$1.get(XECParameters.java:183)
at com.oracle.svm.core.jdk.SystemPropertiesSupport.initializeLazyValue(SystemPropertiesSupport.java:190)
at com.oracle.svm.core.jdk.SystemPropertiesSupport.getProperty(SystemPropertiesSupport.java:143)
at com.oracle.svm.core.jdk.Target_java_lang_System.getProperty(JavaLangSubstitutions.java:331)
at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_VA_LIST:Ljava_lang_System_2_0002egetProperty_00028Ljava_lang_String_2_00029Ljava_lang_String_2(generated:0)
ArticleKeyEntity 如下:
@Entity
@Table(name = "article_key", schema = "master_data")
public class ArticleKeyEntity extends KeyEntity {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "article_id", nullable = false)
public ArticleEntity article;
}
ArticleEntity 如下:
@Entity
@Table(name = "article", schema = "master_data")
public class ArticleEntity extends BaseEntity {
@Column(name = "article_number")
public String articleNumber;
public String description;
@Column(name = "long_description")
public String longDescription;
...
// each article may be identified by different unique keys like numbers barcodes, ....
@OneToMany(mappedBy = "article", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
public List<ArticleKeyEntity> articleKeys;
}
我的错误是什么?有谁能够帮助我? 谢谢
【问题讨论】:
-
为了解决这个问题,我用 getter 和 setter 扩展了受影响的实体。似乎可以解决问题,但简化特别是实体的目标与 Panache 的目标背道而驰。
-
它看起来像一个错误。现在,在用 getter/setter 替换所有 Panache 实体成员访问之后,它就可以工作了。所以我应该打开一个错误报告。
-
是的,请使用小型复制器打开错误报告。