我正在使用以下堆栈运行一个简单的Java应用程序(只是一个RESTendpoint,一个“Hello”响应——正是Quarkus maven原型生成的示例,没有修改):
第一个错误是(尽管这似乎不是主要问题):
[code-with-quarkus-1.0.0-SNAPSHOT-runner:1868] setup: 8,524.65 ms
java.lang.NoSuchMethodException: com.oracle.svm.core.jdk.LocalizationSupport.addBundleToCache(java.lang.String)
at java.lang.Class.getDeclaredMethod(Class.java:2130)
at io.quarkus.runner.AutoFeature.beforeAnalysis(AutoFeature.zig:744)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$7(NativeImageGenerator.java:669)
at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:63)
at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:669)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:530)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:445)
at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
20:17:42,508 INFO [org.jbo.threads] JBoss Threads version 3.0.0.Final
[code-with-quarkus-1.0.0-SNAPSHOT-runner:1868] (typeflow): 34,257.18 ms
[code-with-quarkus-1.0.0-SNAPSHOT-runner:1868] (objects): 19,361.86 ms
[code-with-quarkus-1.0.0-SNAPSHOT-runner:1868] (features): 866.06 ms
[code-with-quarkus-1.0.0-SNAPSHOT-runner:1868] analysis: 56,364.44 ms
真正的问题(我认为)在这里:
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: No instances of java.net.Inet4Address are allowed in the image heap as this class should be initialized at image runtime. To see how this object got instantiated use -H:+TraceClassInitialization.
Detailed message:
Trace:
at parsing org.wildfly.common.net.CidrAddress.<clinit>(CidrAddress.java:46)
Call path from entry point to org.wildfly.common.net.CidrAddress.<clinit>():
no path found from entry point to target method
所以,我试着做的第一件事就是指示班级组织起来。野蝇。常见的网CidraDress不会在映像构建时初始化,而是在映像运行时初始化,配置如下:
quarkus.native.additional-build-args=--initialize-at-run-time=org.wildfly.common.net.CidrAddress
quarkus.native.enable-jni=true
但是,什么都没有改变。我还试图激活(按照指示)参数-H: TraceClass初始化,以找出哪个类正在初始化,这可能会导致问题。没有效果!这个参数没有任何区别(没有额外的信息)。
有人经历过这个场景吗?有什么线索,想法吗?
谢谢
我的多级构建也有同样的问题:
首先我修改了我的pom.xml:
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.version}</version>
<executions>
<execution>
<goals>
<goal>native-image</goal>
</goals>
<configuration>
<enableHttpUrlHandler>true</enableHttpUrlHandler>
<enableHttpsUrlHandler>true</enableHttpsUrlHandler>
<enableJni>true</enableJni>
<additionalBuildArgs>--initialize-at-run-time=java.net.Inet6Address -H:+TraceClassInitialization</additionalBuildArgs>
</configuration>
</execution>
</executions>
</plugin>
还是同样的错误...
然后,我将Dockerfile的基本图像从quay更改为。io/quarkus/centos quarkus maven:19.3.0-java8作为从码头到码头的构建。io/quarkus/centos quarkus maven:19.2.1 AS build这是我完整的Dockerfile。多阶段:
FROM quay.io/quarkus/centos-quarkus-maven:19.2.1 AS build
COPY src /usr/src/app/src
COPY pom.xml /usr/src/app/pom.xml
USER root
RUN chown -R quarkus /usr/src/app
USER quarkus
RUN mvn -f /usr/src/app/pom.xml -Pnative clean package
## Stage 2 : create the docker final image
FROM registry.access.redhat.com/ubi8/ubi-minimal
WORKDIR /work/
COPY --from=build /usr/src/app/target/*-runner /work/application
RUN chmod 775 /work
EXPOSE 8080
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
Quarkus还不支持GraalVM 19.3.0,它刚刚发布,需要一些更改。
尤其是你遇到了这个问题:https://github.com/quarkusio/quarkus/pull/5353
我希望Quarkus1.1支持GraalVM 19.3,但我不确定。
我有一个小Java应用程序,它使用Micronaut 2.0.0实现了一个RESTful API。在引擎盖下,它使用Redisson 3.13.1进入Redis。Redisson则使用Netty(4.1.49)。 该应用程序在“经典”java(在HotSpot上,java 8和java 11)中运行良好。 我正在尝试使用GraalVM从这个应用程序构建一个本机映像。 命令大致如下: 以下是我得到的
提前谢谢。 所以我试图用Maven部署JavaFX应用程序。 它给了我这个错误 我知道为什么它会给出错误。我正在使用Firebase。所以在构建时间初始化的类很少。那么我如何避免它呢? 我评论了我在我的项目中做的所有Firebase代码,并再次测试了它,然后它工作正常。但是当我再次包含Firebase时,我面临这个问题。任何帮助请
问题内容: 我使用Java创建了一个Docker映像,并将jar文件复制到该映像中。我的Dockerfile是: 执行以下命令后: 在控制台中,我看到了应用程序的输出,一切都很好。但是当我停止图像时,我不知道如何再次运行图像?当我执行以下命令时: 该应用程序再次运行,但是在我的Dockerfile中,我已经编写了此命令。如何在不使用此命令的情况下运行映像并使应用程序自动运行? 问题答案: 图像和容
我正在按照有关将ASP.NET MVC应用程序迁移到Windows容器的说明进行操作 我用过 而且似乎下载正确。 然后看到与前面相同的内容,但以“Service'w3svc'was started”行结尾 因此,-it命令似乎有助于让我感觉我已经成功启动了容器。 我实际上无法获得关于“-it”的帮助,因为当我运行时它没有列出
问题内容: 我有一个Docker映像,它是一个node.js应用程序。该应用程序从本地运行的Redis检索一些配置值。因此, 我试图在Docker映像内的同一容器内安装和运行Redis。 如何扩展Docker文件并在其中配置Redis? 到目前为止,Dockerfile如下: 从节点:碳 WORKDIR / app COPY package.json / app 运行npm安装 复制。/ app
我有一个Docker映像,它是一个Node.js应用程序。应用程序从本地运行的Redis检索一些配置值。因此,我试图在Docker映像的同一容器中安装和运行Redis。 我如何扩展Docker文件并在其中配置Redis? 截至目前,Dockerfile如下所示: