亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Micronaut:使用 Consul 依賴項構建本機映像不起作用

Micronaut:使用 Consul 依賴項構建本機映像不起作用

子衿沉夜 2022-09-07 21:47:23
我正在嘗試構建micronaut(v1.0.4)應用程序的本機映像。此應用程序使用 Consul 作為服務發現。我已使用選項創建了應用程序:--features$ mn create-app my-app --features discovery-consul --features graal-native-image --build maven該應用程序在我的本地計算機上運行良好,但是當我嘗試使用本機映像構建docker容器時,我收到錯誤:$ ./docker-build.sh error: No instances are allowed in the image heap for a class that is initialized or reinitialized at image runtime: sun.security.provider.NativePRNGDetailed message:Error: No instances are allowed in the image heap for a class that is initialized or reinitialized at image runtime: sun.security.provider.NativePRNGTrace:  object java.security.SecureRandom    method com.sun.jndi.dns.DnsClient.query(DnsName, int, int, boolean, boolean)Call path from entry point to com.sun.jndi.dns.DnsClient.query(DnsName, int, int, boolean, boolean):     at com.sun.jndi.dns.DnsClient.query(DnsClient.java:178)    at com.sun.jndi.dns.Resolver.query(Resolver.java:81)    at com.sun.jndi.dns.DnsContext.c_getAttributes(DnsContext.java:434)    at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(ComponentDirContext.java:235)    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:141)    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:129)    at javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:142)    at io.micronaut.discovery.client.DnsResolver.getCNamesFromTxtRecord(DnsResolver.java:59)    at io.micronaut.discovery.client.EndpointUtil.getEC2DiscoveryUrlsFromZone(EndpointUtil.java:197)    at io.micronaut.discovery.client.EndpointUtil.getServiceUrlsFromDNS(EndpointUtil.java:141)如果我刪除Consul集成,它可以毫無問題地工作。
查看完整描述

1 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

在瀏覽了幾個問題和帖子之后,我最終找到了答案。

要消除此故障,只需在中創建本機映像時將此類添加到選項下的類列表中:com.sun.jndi.dns.DnsClient--delay-class-initialization-to-runtimeDockerfile

Dockerfile

RUN native-image --no-server \
                 ...
                 --delay-class-initialization-to-runtime=...,com.sun.jndi.dns.DnsClient \
                 -H:-UseServiceLoaderFeature \
                 --allow-incomplete-classpath \
                 -H:Name=model-quotes \
                 -H:Class=model.quotes.Application
...

完成此操作后,一切正常,并且Docker映像已成功生成。

在默認生成的 Dockerfile 中添加此類應該是一個好主意。使用Micronaut CLI生成一個新項目并發現本機映像在不更改任何內容的情況下無法正常工作,這有點煩人。


查看完整回答
反對 回復 2022-09-07
  • 1 回答
  • 0 關注
  • 80 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號