Re: GraalVM native image for embedded Tomcat
On Fri, Oct 16, 2020 at 3:43 PM Martin Grigorov wrote: > Hi, > > I am trying to create a GraalVM native image for an application that uses > tomcat-embed-core but it fails with the following error: > > [INFO] --- native-image-maven-plugin:20.2.0:native-image (default) @ > tomcat-embedded --- > [INFO] ImageClasspath Entry: > org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.39:compile > (file:///home/martin/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.39/tomcat-embed-core-9.0.39.jar) > [INFO] ImageClasspath Entry: > org.apache.tomcat:tomcat-annotations-api:jar:9.0.39:compile > (file:///home/martin/.m2/repository/org/apache/tomcat/tomcat-annotations-api/9.0.39/tomcat-annotations-api-9.0.39.jar) > [INFO] ImageClasspath Entry: > info.mgsolutions:tomcat-embedded:jar:1.0-SNAPSHOT > (file:///home/martin/git/http2-server-perf-tests/java/tomcat/target/tomcat-embedded-1.0-SNAPSHOT.jar) > [INFO] Executing: > /home/martin/devel/graalvm-ce-java11-20.2.0/bin/native-image -cp > /home/martin/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.39/tomcat-embed-core-9.0.39.jar:/home/martin/.m2/repository/org/apache/tomcat/tomcat-annotations-api/9.0.39/tomcat-annotations-api-9.0.39.jar:/home/martin/git/http2-server-perf-tests/java/tomcat/target/tomcat-embedded-1.0-SNAPSHOT.jar > -H:Class=info.mgsolutions.tomcat.TomcatEmbedded > [info.mgsolutions.tomcat.tomcatembedded:568255]classlist: 2,047.64 > ms, 0.96 GB > [info.mgsolutions.tomcat.tomcatembedded:568255](cap): 852.60 > ms, 0.96 GB > [info.mgsolutions.tomcat.tomcatembedded:568255]setup: 2,323.40 > ms, 0.96 GB > Fatal error:java.util.MissingResourceException: Can't find bundle for base > name org.apache.tomcat.util.descriptor.tld.LocalStrings, locale en_US > at > java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2055) > at > java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1689) > at > java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1593) > at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:1284) > at > com.oracle.svm.util.ModuleSupport.getResourceBundleFallback(ModuleSupport.java:81) > at > com.oracle.svm.util.ModuleSupport.getResourceBundle(ModuleSupport.java:62) > at > com.oracle.svm.core.jdk.LocalizationFeature.addBundleToCache(LocalizationFeature.java:266) > at > com.oracle.svm.hosted.ResourcesFeature$ResourcesRegistryImpl.addResourceBundles(ResourcesFeature.java:92) > at > com.oracle.svm.core.configure.ResourceConfigurationParser.parseEntry(ResourceConfigurationParser.java:90) > at > com.oracle.svm.core.configure.ResourceConfigurationParser.parseTopLevelObject(ResourceConfigurationParser.java:71) > at > com.oracle.svm.core.configure.ResourceConfigurationParser.parseAndRegister(ResourceConfigurationParser.java:47) > at > com.oracle.svm.hosted.config.ConfigurationParserUtils.doParseAndRegister(ConfigurationParserUtils.java:132) > at > com.oracle.svm.hosted.config.ConfigurationParserUtils.lambda$parseAndRegisterConfigurations$3(ConfigurationParserUtils.java:119) > at > java.base/java.util.stream.ReferencePipeline$4$1.accept(ReferencePipeline.java:212) > at > com.oracle.svm.hosted.config.ConfigurationParserUtils$1.tryAdvance(ConfigurationParserUtils.java:108) > at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:326) > at > java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658) > at > java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274) > at > java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) > at > java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) > at > java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) > at > java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312) > at > java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734) > at > java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) > at > java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) > at > java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) > at > java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) > at java.base/java.util.stream.IntPipeline.reduce(IntPipeline.java:491) > at java.base/java.util.stream.IntPipeline.sum(IntPipeline.java:449) > at > com.oracle.svm.hosted.config.ConfigurationParserUtils.parseAndRegisterConfigurations(ConfigurationParserUtils.java:125) > at > com.oracle.svm.hosted.ResourcesFeature.beforeAnalysis(ResourcesFeature.java:105) > at > com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$7(NativeImageGenerator.java:693) > at > com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:70) > at >
GraalVM native image for embedded Tomcat
Hi, I am trying to create a GraalVM native image for an application that uses tomcat-embed-core but it fails with the following error: [INFO] --- native-image-maven-plugin:20.2.0:native-image (default) @ tomcat-embedded --- [INFO] ImageClasspath Entry: org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.39:compile (file:///home/martin/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.39/tomcat-embed-core-9.0.39.jar) [INFO] ImageClasspath Entry: org.apache.tomcat:tomcat-annotations-api:jar:9.0.39:compile (file:///home/martin/.m2/repository/org/apache/tomcat/tomcat-annotations-api/9.0.39/tomcat-annotations-api-9.0.39.jar) [INFO] ImageClasspath Entry: info.mgsolutions:tomcat-embedded:jar:1.0-SNAPSHOT (file:///home/martin/git/http2-server-perf-tests/java/tomcat/target/tomcat-embedded-1.0-SNAPSHOT.jar) [INFO] Executing: /home/martin/devel/graalvm-ce-java11-20.2.0/bin/native-image -cp /home/martin/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.39/tomcat-embed-core-9.0.39.jar:/home/martin/.m2/repository/org/apache/tomcat/tomcat-annotations-api/9.0.39/tomcat-annotations-api-9.0.39.jar:/home/martin/git/http2-server-perf-tests/java/tomcat/target/tomcat-embedded-1.0-SNAPSHOT.jar -H:Class=info.mgsolutions.tomcat.TomcatEmbedded [info.mgsolutions.tomcat.tomcatembedded:568255]classlist: 2,047.64 ms, 0.96 GB [info.mgsolutions.tomcat.tomcatembedded:568255](cap): 852.60 ms, 0.96 GB [info.mgsolutions.tomcat.tomcatembedded:568255]setup: 2,323.40 ms, 0.96 GB Fatal error:java.util.MissingResourceException: Can't find bundle for base name org.apache.tomcat.util.descriptor.tld.LocalStrings, locale en_US at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2055) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1689) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1593) at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:1284) at com.oracle.svm.util.ModuleSupport.getResourceBundleFallback(ModuleSupport.java:81) at com.oracle.svm.util.ModuleSupport.getResourceBundle(ModuleSupport.java:62) at com.oracle.svm.core.jdk.LocalizationFeature.addBundleToCache(LocalizationFeature.java:266) at com.oracle.svm.hosted.ResourcesFeature$ResourcesRegistryImpl.addResourceBundles(ResourcesFeature.java:92) at com.oracle.svm.core.configure.ResourceConfigurationParser.parseEntry(ResourceConfigurationParser.java:90) at com.oracle.svm.core.configure.ResourceConfigurationParser.parseTopLevelObject(ResourceConfigurationParser.java:71) at com.oracle.svm.core.configure.ResourceConfigurationParser.parseAndRegister(ResourceConfigurationParser.java:47) at com.oracle.svm.hosted.config.ConfigurationParserUtils.doParseAndRegister(ConfigurationParserUtils.java:132) at com.oracle.svm.hosted.config.ConfigurationParserUtils.lambda$parseAndRegisterConfigurations$3(ConfigurationParserUtils.java:119) at java.base/java.util.stream.ReferencePipeline$4$1.accept(ReferencePipeline.java:212) at com.oracle.svm.hosted.config.ConfigurationParserUtils$1.tryAdvance(ConfigurationParserUtils.java:108) at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:326) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658) at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.IntPipeline.reduce(IntPipeline.java:491) at java.base/java.util.stream.IntPipeline.sum(IntPipeline.java:449) at com.oracle.svm.hosted.config.ConfigurationParserUtils.parseAndRegisterConfigurations(ConfigurationParserUtils.java:125) at com.oracle.svm.hosted.ResourcesFeature.beforeAnalysis(ResourcesFeature.java:105) at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$7(NativeImageGenerator.java:693) at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:70) at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:693) at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:555) at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:468)