Describe the bug
I have a quarkus application which makes a flyway database migration at startup.
My database is a postgres db allowing only ssl connections.
I compile a native image successfully.
[INFO] --- quarkus-maven-plugin:0.25.0:build (default) @ instantmobile ---
[INFO] [io.quarkus.deployment.QuarkusAugmentor] Beginning quarkus augmentation
[INFO] [org.jboss.threads] JBoss Threads version 3.0.0.Final
[INFO] [io.quarkus.flyway.FlywayProcessor] Adding application migrations in path '/C:/git/Trend-Radar/instantmobile-quarkus/target/classes/db/migration' using protocol 'file'
[INFO] [org.hibernate.jpa.boot.internal.PersistenceXmlParser] HHH000318: Could not find any META-INF/persistence.xml file in the classpath
[INFO] [org.hibernate.Version] HHH000412: Hibernate Core {5.4.6.Final}
[INFO] [io.quarkus.resteasy] Resteasy running without servlet container.
[INFO] [io.quarkus.resteasy] - Add quarkus-undertow to run Resteasy within a servlet container
[INFO] [io.quarkus.deployment.QuarkusAugmentor] Quarkus augmentation completed in 3214ms
[INFO] [io.quarkus.creator.phase.runnerjar.RunnerJarPhase] Building jar: C:\git\Trend-Radar\instantmobile-quarkus\target\instantmobile-1.0-SNAPSHOT-runner.jar
[INFO]
[INFO] --- quarkus-maven-plugin:0.25.0:native-image (default) @ instantmobile ---
[INFO] [io.quarkus.creator.phase.nativeimage.NativeImagePhase] Running Quarkus native-image plugin on OpenJDK 64-Bit Server VM
[INFO] [io.quarkus.creator.phase.nativeimage.NativeImagePhase] docker run -v C:\git\Trend-Radar\instantmobile-quarkus\target:/project:z --rm quay.io/quarkus/ubi-quarkus-native-image:19.2.0.1 -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dio.netty.leakDetection.level=DISABLED -J-Dvertx.logger-delegate-factory-class-name=io.quarkus.vertx.core.runtime.VertxLogDelegateFactory -J-Dsun.nio.ch.maxUpdateArraySize=100 -J-Dio.netty.allocator.maxOrder=1 -J-Dvertx.disableDnsResolver=true -H:IncludeResources=META-INF/resources/.* --initialize-at-build-time= -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime -jar instantmobile-1.0-SNAPSHOT-runner.jar -J-Djava.util.concurrent.ForkJoinPool.common.parallelism=1 -H:FallbackThreshold=0 -H:+ReportExceptionStackTraces -H:+PrintAnalysisCallTree -H:-AddAllCharsets -H:EnableURLProtocols=http,https --enable-all-security-services -H:+JNI -H:-UseServiceLoaderFeature -H:+StackTrace
Build on Server(pid: 28, port: 36615)*
[instantmobile-1.0-SNAPSHOT-runner:28] classlist: 16,022.07 ms
[instantmobile-1.0-SNAPSHOT-runner:28] (cap): 1,483.57 ms
[instantmobile-1.0-SNAPSHOT-runner:28] setup: 3,468.05 ms
13:14:36,465 INFO [org.hib.Version] HHH000412: Hibernate Core {5.4.6.Final}
13:14:36,492 INFO [org.hib.ann.com.Version] HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
13:14:36,533 INFO [org.hib.dia.Dialect] HHH000400: Using dialect: io.quarkus.hibernate.orm.runtime.dialect.QuarkusPostgreSQL95Dialect
13:14:38,822 INFO [org.jbo.threads] JBoss Threads version 3.0.0.Final
13:14:40,077 INFO [com.arj.ats.arjuna] ARJUNA012170: TransactionStatusManager started on port 36521 and host 127.0.0.1 with service com.arjuna.ats.arjuna.recovery.ActionStatusService
[instantmobile-1.0-SNAPSHOT-runner:28] (typeflow): 53,230.37 ms
[instantmobile-1.0-SNAPSHOT-runner:28] (objects): 22,599.06 ms
[instantmobile-1.0-SNAPSHOT-runner:28] (features): 1,261.27 ms
[instantmobile-1.0-SNAPSHOT-runner:28] analysis: 81,527.13 ms
Printing call tree to /project/reports/call_tree_instantmobile-1.0-SNAPSHOT-runner_20191017_131619.txt
Printing list of used classes to /project/reports/used_classes_instantmobile-1.0-SNAPSHOT-runner_20191017_131630.txt
Printing list of used packages to /project/reports/used_packages_instantmobile-1.0-SNAPSHOT-runner_20191017_131630.txt
[instantmobile-1.0-SNAPSHOT-runner:28] (clinit): 1,202.76 ms
[instantmobile-1.0-SNAPSHOT-runner:28] universe: 3,882.22 ms
[instantmobile-1.0-SNAPSHOT-runner:28] (parse): 9,987.58 ms
[instantmobile-1.0-SNAPSHOT-runner:28] (inline): 9,373.37 ms
[instantmobile-1.0-SNAPSHOT-runner:28] (compile): 57,773.18 ms
[instantmobile-1.0-SNAPSHOT-runner:28] compile: 80,990.49 ms
[instantmobile-1.0-SNAPSHOT-runner:28] image: 4,884.87 ms
[instantmobile-1.0-SNAPSHOT-runner:28] write: 2,377.36 ms
[instantmobile-1.0-SNAPSHOT-runner:28] [total]: 227,369.27 ms
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:17 min
[INFO] Finished at: 2019-10-17T15:18:05+02:00
[INFO] ------------------------------------------------------------------------
harald@xxx:/instantmobile-quarkus/target$ ./instantmobile-1.0-SNAPSHOT-runner -Djava.library.path=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64 -Djavax.net.ssl.trustStore=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts
13:29:05 INFO [org.flywaydb.core.internal.license.VersionPrinter]] (main) Flyway Community Edition 6.0.4 by Redgate
WARNING: The sunec native library, required by the SunEC provider, could not be loaded. This library is usually shipped as part of the JDK and can be found under
<JAVA_HOME>/jre/lib/<platform>/libsunec.so. It is loaded at run time via System.loadLibrary("sunec"), the first time services from SunEC are accessed. To use this provider's services the java.library.path system property needs to be set accordingly to point to a location that contains libsunec.so. Note that if java.library.path is not set it defaults to the current working directory.
java.lang.UnsatisfiedLinkError: sun.security.ec.ECKeyPairGenerator.isCurveSupported([B)Z [symbol: Java_sun_security_ec_ECKeyPairGenerator_isCurveSupported or Java_sun_security_ec_ECKeyPairGenerator_isCurveSupported___3B]
at com.oracle.svm.jni.access.JNINativeLinkage.getOrFindEntryPoint(JNINativeLinkage.java:145)
at com.oracle.svm.jni.JNIGeneratedMethodSupport.nativeCallAddress(JNIGeneratedMethodSupport.java:57)
at sun.security.ec.ECKeyPairGenerator.isCurveSupported(ECKeyPairGenerator.java)
at sun.security.ec.ECKeyPairGenerator.ensureCurveIsSupported(ECKeyPairGenerator.java:135)
at sun.security.ec.ECKeyPairGenerator.initialize(ECKeyPairGenerator.java:114)
at java.security.KeyPairGenerator$Delegate.initialize(KeyPairGenerator.java:674)
at sun.security.ssl.ECDHCrypt.<init>(ECDHCrypt.java:77)
at sun.security.ssl.ClientHandshaker.serverKeyExchange(ClientHandshaker.java:783)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:302)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:965)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
at org.postgresql.ssl.MakeSSL.convert(MakeSSL.java:40)
at org.postgresql.core.v3.ConnectionFactoryImpl.enableSSL(ConnectionFactoryImpl.java:441)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:94)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
at org.postgresql.Driver.makeConnection(Driver.java:458)
at org.postgresql.Driver.connect(Driver.java:260)
at io.agroal.pool.ConnectionFactory.createConnection(ConnectionFactory.java:200)
at io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:370)
at io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:352)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at io.agroal.pool.util.PriorityScheduledExecutor.beforeExecute(PriorityScheduledExecutor.java:65)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460)
at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193)
Exception in thread "main" java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl1.doStart(ApplicationImpl1.zig:268)
at io.quarkus.runtime.Application.start(Application.java:94)
at io.quarkus.runtime.Application.run(Application.java:218)
at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:41)
Caused by: java.lang.UnsatisfiedLinkError: sun.security.ec.ECKeyPairGenerator.isCurveSupported([B)Z [symbol: Java_sun_security_ec_ECKeyPairGenerator_isCurveSupported or Java_sun_security_ec_ECKeyPairGenerator_isCurveSupported___3B]
at com.oracle.svm.jni.access.JNINativeLinkage.getOrFindEntryPoint(JNINativeLinkage.java:145)
at com.oracle.svm.jni.JNIGeneratedMethodSupport.nativeCallAddress(JNIGeneratedMethodSupport.java:57)
at sun.security.ec.ECKeyPairGenerator.isCurveSupported(ECKeyPairGenerator.java)
at sun.security.ec.ECKeyPairGenerator.ensureCurveIsSupported(ECKeyPairGenerator.java:135)
at sun.security.ec.ECKeyPairGenerator.initialize(ECKeyPairGenerator.java:114)
at java.security.KeyPairGenerator$Delegate.initialize(KeyPairGenerator.java:674)
at sun.security.ssl.ECDHCrypt.<init>(ECDHCrypt.java:77)
at sun.security.ssl.ClientHandshaker.serverKeyExchange(ClientHandshaker.java:783)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:302)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:965)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
at org.postgresql.ssl.MakeSSL.convert(MakeSSL.java:40)
at org.postgresql.core.v3.ConnectionFactoryImpl.enableSSL(ConnectionFactoryImpl.java:441)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:94)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
at org.postgresql.Driver.makeConnection(Driver.java:458)
at org.postgresql.Driver.connect(Driver.java:260)
at io.agroal.pool.ConnectionFactory.createConnection(ConnectionFactory.java:200)
at io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:370)
at io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:352)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at io.agroal.pool.util.PriorityScheduledExecutor.beforeExecute(PriorityScheduledExecutor.java:65)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460)
at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193)
harald@xxx:/instantmobile-quarkus/target$
Expected behavior
Successful SSL connection to my postgres database.
Actual behavior
Can not start to application due to ssl handshake error.
To Reproduce
Steps to reproduce the behavior:
Environment (please complete the following information):
uname -a or ver:Output of java -version:
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
Quarkus version or git rev: 0.25.0
./instantmobile-1.0-SNAPSHOT-runner -Djava.library.path=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64 -Djavax.net.ssl.trustStore=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts
Can you post the output of:
ls -lh /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64
or even the output of:
tree /usr/lib/jvm/java-8-openjdk-amd64/jre
Output of jre/lib/amd64:
harald@xxx:/instantmobile-quarkus$ ls -lh /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64
total 4.2M
drwxr-xr-x 1 root root 4.0K Apr 16 2019 jli
lrwxrwxrwx 1 root root 33 Jan 14 2019 jvm.cfg -> /etc/java-8-openjdk/jvm-amd64.cfg
-rw-r--r-- 1 root root 278 Jan 14 2019 jvm.cfg-default
-rw-r--r-- 1 root root 15K Jan 14 2019 libattach.so
-rw-r--r-- 1 root root 685K Jan 14 2019 libawt.so
-rw-r--r-- 1 root root 31K Jan 14 2019 libawt_headless.so
-rw-r--r-- 1 root root 348K Jan 14 2019 libawt_xawt.so
-rw-r--r-- 1 root root 19K Jan 14 2019 libdt_socket.so
-rw-r--r-- 1 root root 336K Jan 14 2019 libfontmanager.so
-rw-r--r-- 1 root root 187K Jan 14 2019 libhprof.so
-rw-r--r-- 1 root root 51K Jan 14 2019 libicedtea-sound.so
-rw-r--r-- 1 root root 43K Jan 14 2019 libinstrument.so
-rw-r--r-- 1 root root 39K Jan 14 2019 libj2gss.so
-rw-r--r-- 1 root root 15K Jan 14 2019 libj2pcsc.so
-rw-r--r-- 1 root root 67K Jan 14 2019 libj2pkcs11.so
-rw-r--r-- 1 root root 6.1K Jan 14 2019 libjaas_unix.so
-rw-r--r-- 1 root root 191K Jan 14 2019 libjava.so
-rw-r--r-- 1 root root 23K Jan 14 2019 libjava_crw_demo.so
-rw-r--r-- 1 root root 47K Jan 14 2019 libjavajpeg.so
-rw-r--r-- 1 root root 19K Jan 14 2019 libjavalcms.so
-rw-r--r-- 1 root root 6.0K Jan 14 2019 libjawt.so
-rw-r--r-- 1 root root 240K Jan 14 2019 libjdwp.so
-rw-r--r-- 1 root root 11K Jan 14 2019 libjsdt.so
-rw-r--r-- 1 root root 11K Jan 14 2019 libjsig.so
-rw-r--r-- 1 root root 6.0K Jan 14 2019 libjsound.so
-rw-r--r-- 1 root root 64K Jan 14 2019 libjsoundalsa.so
-rw-r--r-- 1 root root 39K Jan 14 2019 libmanagement.so
-rw-r--r-- 1 root root 1003K Jan 14 2019 libmlib_image.so
-rw-r--r-- 1 root root 95K Jan 14 2019 libnet.so
-rw-r--r-- 1 root root 75K Jan 14 2019 libnio.so
-rw-r--r-- 1 root root 15K Jan 14 2019 libnpt.so
-rw-r--r-- 1 root root 51K Jan 14 2019 libsaproc.so
-rw-r--r-- 1 root root 23K Jan 14 2019 libsctp.so
-rw-r--r-- 1 root root 43K Jan 14 2019 libsplashscreen.so
-rw-r--r-- 1 root root 179K Jan 14 2019 libsunec.so
-rw-r--r-- 1 root root 98K Jan 14 2019 libunpack.so
-rw-r--r-- 1 root root 71K Jan 14 2019 libverify.so
-rw-r--r-- 1 root root 35K Jan 14 2019 libzip.so
drwxr-xr-x 1 root root 4.0K Apr 16 2019 server
And the tree output:
harald@xxx:/instantmobile-quarkus$ tree /usr/lib/jvm/java-8-openjdk-amd64/jre
/usr/lib/jvm/java-8-openjdk-amd64/jre
โโโ ASSEMBLY_EXCEPTION
โโโ THIRD_PARTY_README
โโโ bin
โ โโโ java
โ โโโ jjs
โ โโโ keytool
โ โโโ orbd
โ โโโ pack200
โ โโโ policytool
โ โโโ rmid
โ โโโ rmiregistry
โ โโโ servertool
โ โโโ tnameserv
โ โโโ unpack200
โโโ lib
โ โโโ accessibility.properties -> /etc/java-8-openjdk/accessibility.properties
โ โโโ amd64
โ โ โโโ jli
โ โ โ โโโ libjli.so
โ โ โโโ jvm.cfg -> /etc/java-8-openjdk/jvm-amd64.cfg
โ โ โโโ jvm.cfg-default
โ โ โโโ libattach.so
โ โ โโโ libawt.so
โ โ โโโ libawt_headless.so
โ โ โโโ libawt_xawt.so
โ โ โโโ libdt_socket.so
โ โ โโโ libfontmanager.so
โ โ โโโ libhprof.so
โ โ โโโ libicedtea-sound.so
โ โ โโโ libinstrument.so
โ โ โโโ libj2gss.so
โ โ โโโ libj2pcsc.so
โ โ โโโ libj2pkcs11.so
โ โ โโโ libjaas_unix.so
โ โ โโโ libjava.so
โ โ โโโ libjava_crw_demo.so
โ โ โโโ libjavajpeg.so
โ โ โโโ libjavalcms.so
โ โ โโโ libjawt.so
โ โ โโโ libjdwp.so
โ โ โโโ libjsdt.so
โ โ โโโ libjsig.so
โ โ โโโ libjsound.so
โ โ โโโ libjsoundalsa.so
โ โ โโโ libmanagement.so
โ โ โโโ libmlib_image.so
โ โ โโโ libnet.so
โ โ โโโ libnio.so
โ โ โโโ libnpt.so
โ โ โโโ libsaproc.so
โ โ โโโ libsctp.so
โ โ โโโ libsplashscreen.so
โ โ โโโ libsunec.so
โ โ โโโ libunpack.so
โ โ โโโ libverify.so
โ โ โโโ libzip.so
โ โ โโโ server
โ โ โโโ Xusage.txt
โ โ โโโ classes.jsa
โ โ โโโ libjsig.so -> ../libjsig.so
โ โ โโโ libjvm.so
โ โโโ calendars.properties -> /etc/java-8-openjdk/calendars.properties
โ โโโ charsets.jar
โ โโโ classlist
โ โโโ cmm
โ โ โโโ CIEXYZ.pf
โ โ โโโ GRAY.pf
โ โ โโโ LINEAR_RGB.pf
โ โ โโโ PYCC.pf
โ โ โโโ sRGB.pf
โ โโโ content-types.properties -> /etc/java-8-openjdk/content-types.properties
โ โโโ currency.data
โ โโโ ext
โ โ โโโ cldrdata.jar
โ โ โโโ dnsns.jar
โ โ โโโ icedtea-sound.jar
โ โ โโโ jaccess.jar
โ โ โโโ java-atk-wrapper.jar -> ../../../../../../share/java/java-atk-wrapper.jar
โ โ โโโ libatk-wrapper.so -> ../../../../../x86_64-linux-gnu/jni/libatk-wrapper.so
โ โ โโโ localedata.jar
โ โ โโโ nashorn.jar
โ โ โโโ sunec.jar
โ โ โโโ sunjce_provider.jar
โ โ โโโ sunpkcs11.jar
โ โ โโโ zipfs.jar
โ โโโ flavormap.properties -> /etc/java-8-openjdk/flavormap.properties
โ โโโ hijrah-config-umalqura.properties
โ โโโ images
โ โ โโโ cursors
โ โ โโโ cursors.properties -> /etc/java-8-openjdk/images/cursors/cursors.properties
โ โ โโโ invalid32x32.gif
โ โ โโโ motif_CopyDrop32x32.gif
โ โ โโโ motif_CopyNoDrop32x32.gif
โ โ โโโ motif_LinkDrop32x32.gif
โ โ โโโ motif_LinkNoDrop32x32.gif
โ โ โโโ motif_MoveDrop32x32.gif
โ โ โโโ motif_MoveNoDrop32x32.gif
โ โโโ jar.binfmt
โ โโโ jce.jar
โ โโโ jexec
โ โโโ jsse.jar
โ โโโ jvm.hprof.txt
โ โโโ logging.properties -> /etc/java-8-openjdk/logging.properties
โ โโโ management
โ โ โโโ jmxremote.access -> /etc/java-8-openjdk/management/jmxremote.access
โ โ โโโ jmxremote.password -> /etc/java-8-openjdk/management/jmxremote.password
โ โ โโโ management.properties -> /etc/java-8-openjdk/management/management.properties
โ โ โโโ snmp.acl -> /etc/java-8-openjdk/management/snmp.acl
โ โโโ management-agent.jar
โ โโโ meta-index
โ โโโ net.properties -> /etc/java-8-openjdk/net.properties
โ โโโ psfont.properties.ja -> /etc/java-8-openjdk/psfont.properties.ja
โ โโโ psfontj2d.properties -> /etc/java-8-openjdk/psfontj2d.properties
โ โโโ resources.jar
โ โโโ rt.jar
โ โโโ security
โ โ โโโ blacklisted.certs -> /etc/java-8-openjdk/security/blacklisted.certs
โ โ โโโ cacerts -> /etc/ssl/certs/java/cacerts
โ โ โโโ java.policy -> /etc/java-8-openjdk/security/java.policy
โ โ โโโ java.security -> /etc/java-8-openjdk/security/java.security
โ โ โโโ nss.cfg -> /etc/java-8-openjdk/security/nss.cfg
โ โ โโโ policy
โ โ โโโ limited
โ โ โ โโโ US_export_policy.jar
โ โ โ โโโ local_policy.jar
โ โ โโโ unlimited
โ โ โโโ US_export_policy.jar
โ โ โโโ local_policy.jar
โ โโโ sound.properties -> /etc/java-8-openjdk/sound.properties
โ โโโ swing.properties -> /etc/java-8-openjdk/swing.properties
โ โโโ tzdb.dat
โโโ man
โโโ ja -> ja_JP.UTF-8
โโโ ja_JP.UTF-8
โ โโโ man1
โ โโโ java.1.gz
โ โโโ jjs.1.gz
โ โโโ keytool.1.gz
โ โโโ orbd.1.gz
โ โโโ pack200.1.gz
โ โโโ policytool.1.gz
โ โโโ rmid.1.gz
โ โโโ rmiregistry.1.gz
โ โโโ servertool.1.gz
โ โโโ tnameserv.1.gz
โ โโโ unpack200.1.gz
โโโ man1
โโโ java.1.gz
โโโ jjs.1.gz
โโโ keytool.1.gz
โโโ orbd.1.gz
โโโ pack200.1.gz
โโโ policytool.1.gz
โโโ rmid.1.gz
โโโ rmiregistry.1.gz
โโโ servertool.1.gz
โโโ tnameserv.1.gz
โโโ unpack200.1.gz
19 directories, 139 files
Thank you. While I have you here, can you also post us the output of:
echo $GRAALVM_HOME
and then
ls -lh $GRAALVM_HOME/jre/lib/amd64
and
tree $GRAALVM_HOME/jre/
Just reinstalled the latest graalvm for linux (befor my runtime was openjdk only) but resulted in the same error.
My new call of my executable:
./instantmobile-1.0-SNAPSHOT-runner -Djava.library.path=$GRAALVM_HOME/jre/lib/amd64 -Djavax.net.ssl.trustStore=$GRAALVM_HOME/jre/lib/security/cacerts
My graalvm env variable:
harald@xxx:/instantmobile-quarkus/target$ echo $GRAALVM_HOME
/home/harald/graalvm/graalvm-ce-19.2.1
The libraries:
harald@xxx:/instantmobile-quarkus/target$ ls -lh $GRAALVM_HOME/jre/lib/amd64
total 37M
drwxrwxrwx 1 harald harald 4.0K Oct 18 12:52 jli
-rw-r--r-- 1 harald harald 1.6K Oct 12 02:22 jvm.cfg
-rwxr-xr-x 1 harald harald 19K Oct 8 12:50 libattach.so
-rwxr-xr-x 1 harald harald 758K Oct 8 12:50 libawt.so
-rwxr-xr-x 1 harald harald 40K Oct 8 12:50 libawt_headless.so
-rwxr-xr-x 1 harald harald 480K Oct 8 12:50 libawt_xawt.so
-rwxr-xr-x 1 harald harald 25K Oct 8 12:50 libdt_socket.so
-rwxr-xr-x 1 harald harald 533K Oct 8 12:50 libfontmanager.so
-rwxr-xr-x 1 harald harald 208K Oct 8 12:50 libhprof.so
-rwxr-xr-x 1 harald harald 52K Oct 8 12:50 libinstrument.so
-rwxr-xr-x 1 harald harald 47K Oct 8 12:50 libj2gss.so
-rwxr-xr-x 1 harald harald 19K Oct 8 12:50 libj2pcsc.so
-rwxr-xr-x 1 harald harald 89K Oct 8 12:50 libj2pkcs11.so
-rwxr-xr-x 1 harald harald 8.2K Oct 8 12:50 libjaas_unix.so
-rwxr-xr-x 1 harald harald 207K Oct 8 12:50 libjava.so
-rwxr-xr-x 1 harald harald 26K Oct 8 12:50 libjava_crw_demo.so
-rwxr-xr-x 1 harald harald 8.2K Oct 8 12:50 libjawt.so
-rwxr-xr-x 1 harald harald 268K Oct 8 12:50 libjdwp.so
-rwxr-xr-x 1 harald harald 230K Oct 8 12:50 libjpeg.so
-rwxr-xr-x 1 harald harald 13K Oct 8 12:50 libjsdt.so
-rwxr-xr-x 1 harald harald 11K Oct 12 02:23 libjsig.so
-rwxr-xr-x 1 harald harald 8.4K Oct 8 12:50 libjsound.so
-rwxr-xr-x 1 harald harald 83K Oct 8 12:50 libjsoundalsa.so
-rwxr-xr-x 1 harald harald 31M Oct 12 17:16 libjvmcicompiler.so
-rwxr-xr-x 1 harald harald 421K Oct 8 12:50 liblcms.so
-rwxr-xr-x 1 harald harald 52K Oct 8 12:50 libmanagement.so
-rwxr-xr-x 1 harald harald 895K Oct 8 12:50 libmlib_image.so
-rwxr-xr-x 1 harald harald 116K Oct 8 12:50 libnet.so
-rwxr-xr-x 1 harald harald 94K Oct 8 12:50 libnio.so
-rwxr-xr-x 1 harald harald 18K Oct 8 12:50 libnpt.so
-rwxr-xr-x 1 harald harald 50K Oct 12 02:23 libsaproc.so
-rwxr-xr-x 1 harald harald 30K Oct 8 12:50 libsctp.so
-rwxr-xr-x 1 harald harald 443K Oct 8 12:50 libsplashscreen.so
-rwxr-xr-x 1 harald harald 254K Oct 8 12:50 libsunec.so
-rwxr-xr-x 1 harald harald 250K Oct 12 16:32 libtrufflenfi.so
-rwxr-xr-x 1 harald harald 165K Oct 8 12:50 libunpack.so
-rwxr-xr-x 1 harald harald 73K Oct 8 12:50 libverify.so
-rwxr-xr-x 1 harald harald 129K Oct 8 12:50 libzip.so
drwxrwxrwx 1 harald harald 4.0K Oct 18 12:52 server
The directory tree:
harald@xxx:~$ tree $GRAALVM_HOME/jre/lib
/home/harald/graalvm/graalvm-ce-19.2.1/jre/lib
โโโ amd64
โย ย โโโ jli
โย ย โย ย โโโ libjli.so
โย ย โโโ jvm.cfg
โย ย โโโ libattach.so
โย ย โโโ libawt.so
โย ย โโโ libawt_headless.so
โย ย โโโ libawt_xawt.so
โย ย โโโ libdt_socket.so
โย ย โโโ libfontmanager.so
โย ย โโโ libhprof.so
โย ย โโโ libinstrument.so
โย ย โโโ libj2gss.so
โย ย โโโ libj2pcsc.so
โย ย โโโ libj2pkcs11.so
โย ย โโโ libjaas_unix.so
โย ย โโโ libjava.so
โย ย โโโ libjava_crw_demo.so
โย ย โโโ libjawt.so
โย ย โโโ libjdwp.so
โย ย โโโ libjpeg.so
โย ย โโโ libjsdt.so
โย ย โโโ libjsig.so
โย ย โโโ libjsound.so
โย ย โโโ libjsoundalsa.so
โย ย โโโ libjvmcicompiler.so
โย ย โโโ liblcms.so
โย ย โโโ libmanagement.so
โย ย โโโ libmlib_image.so
โย ย โโโ libnet.so
โย ย โโโ libnio.so
โย ย โโโ libnpt.so
โย ย โโโ libsaproc.so
โย ย โโโ libsctp.so
โย ย โโโ libsplashscreen.so
โย ย โโโ libsunec.so
โย ย โโโ libtrufflenfi.so
โย ย โโโ libunpack.so
โย ย โโโ libverify.so
โย ย โโโ libzip.so
โย ย โโโ server
โย ย โโโ Xusage.txt
โย ย โโโ libjsig.so
โย ย โโโ libjvm.so
โย ย โโโ vm.properties
โโโ boot
โย ย โโโ graal-sdk.jar
โย ย โโโ graal-sdk.src.zip
โย ย โโโ graaljs-scriptengine.jar
โโโ calendars.properties
โโโ charsets.jar
โโโ classlist
โโโ cmm
โย ย โโโ CIEXYZ.pf
โย ย โโโ GRAY.pf
โย ย โโโ LINEAR_RGB.pf
โย ย โโโ PYCC.pf
โย ย โโโ sRGB.pf
โโโ content-types.properties
โโโ currency.data
โโโ ext
โย ย โโโ cldrdata.jar
โย ย โโโ dnsns.jar
โย ย โโโ jaccess.jar
โย ย โโโ localedata.jar
โย ย โโโ meta-index
โย ย โโโ nashorn.jar
โย ย โโโ sunec.jar
โย ย โโโ sunjce_provider.jar
โย ย โโโ sunpkcs11.jar
โย ย โโโ zipfs.jar
โโโ flavormap.properties
โโโ graal
โย ย โโโ graal-compiler-match-processor.jar
โย ย โโโ graal-nodeinfo-processor.jar
โย ย โโโ graal-options-processor.jar
โย ย โโโ graal-processor-common.jar
โย ย โโโ graal-replacements-processor.jar
โย ย โโโ graal-serviceprovider-processor.jar
โโโ graalvm
โย ย โโโ graal-hotspot-library.jar
โย ย โโโ graal-truffle-compiler-libgraal.jar
โย ย โโโ graaljs-launcher.jar
โย ย โโโ launcher-common.jar
โย ย โโโ launcher-common.src.zip
โย ย โโโ sulong-launcher.jar
โย ย โโโ sulong-toolchain-launchers.jar
โโโ hijrah-config-umalqura.properties
โโโ images
โย ย โโโ cursors
โย ย โโโ cursors.properties
โย ย โโโ invalid32x32.gif
โย ย โโโ motif_CopyDrop32x32.gif
โย ย โโโ motif_CopyNoDrop32x32.gif
โย ย โโโ motif_LinkDrop32x32.gif
โย ย โโโ motif_LinkNoDrop32x32.gif
โย ย โโโ motif_MoveDrop32x32.gif
โย ย โโโ motif_MoveNoDrop32x32.gif
โโโ jce.jar
โโโ jexec
โโโ jsse.jar
โโโ jvm.hprof.txt
โโโ jvmci
โย ย โโโ compiler-name
โย ย โโโ graal-management.jar
โย ย โโโ graal.jar
โย ย โโโ jvmci-api.jar
โย ย โโโ jvmci-api.src.zip
โย ย โโโ jvmci-hotspot.jar
โย ย โโโ jvmci-hotspot.src.zip
โย ย โโโ parentClassLoader.classpath
โโโ jvmci-services.jar
โโโ jvmci-services.src.zip
โโโ libfdlibm.a
โโโ libjaas.a
โโโ libjava.a
โโโ libnet.a
โโโ libnio.a
โโโ libsunec.a
โโโ libzip.a
โโโ logging.properties
โโโ management
โย ย โโโ jmxremote.access
โย ย โโโ jmxremote.password.template
โย ย โโโ management.properties
โย ย โโโ snmp.acl.template
โโโ management-agent.jar
โโโ meta-index
โโโ net.properties
โโโ polyglot
โย ย โโโ graal_isolate.h
โย ย โโโ graal_isolate_dynamic.h
โย ย โโโ libpolyglot.h
โย ย โโโ libpolyglot.so
โย ย โโโ libpolyglot_dynamic.h
โย ย โโโ polyglot-native-api.jar
โย ย โโโ polyglot_api.h
โย ย โโโ polyglot_api_dynamic.h
โย ย โโโ polyglot_isolate.h
โย ย โโโ polyglot_isolate_dynamic.h
โย ย โโโ polyglot_types.h
โโโ psfont.properties.ja
โโโ psfontj2d.properties
โโโ resources.jar
โโโ rt.jar
โโโ security
โย ย โโโ blacklisted.certs
โย ย โโโ cacerts
โย ย โโโ java.policy
โย ย โโโ java.security
โย ย โโโ policy
โย ย โโโ limited
โย ย โย ย โโโ US_export_policy.jar
โย ย โย ย โโโ local_policy.jar
โย ย โโโ unlimited
โย ย โโโ US_export_policy.jar
โย ย โโโ local_policy.jar
โโโ sound.properties
โโโ svm
โย ย โโโ builder
โย ย โย ย โโโ clibraries
โย ย โย ย โย ย โโโ linux-amd64
โย ย โย ย โย ย โโโ include
โย ย โย ย โย ย โย ย โโโ cpufeatures.h
โย ย โย ย โย ย โย ย โโโ ffi.h
โย ย โย ย โย ย โย ย โโโ ffitarget.h
โย ย โย ย โย ย โย ย โโโ svm_libffi.h
โย ย โย ย โย ย โย ย โโโ trufflenfi.h
โย ย โย ย โย ย โโโ libffi.a
โย ย โย ย โย ย โโโ libjvm.a
โย ย โย ย โย ย โโโ liblibchelper.a
โย ย โย ย โย ย โโโ libstrictmath.a
โย ย โย ย โโโ graal-llvm.jar
โย ย โย ย โโโ javacpp.jar
โย ย โย ย โโโ llvm-platform-specific.jar
โย ย โย ย โโโ llvm-wrapper.jar
โย ย โย ย โโโ objectfile.jar
โย ย โย ย โโโ pointsto.jar
โย ย โย ย โโโ svm-llvm.jar
โย ย โย ย โโโ svm.jar
โย ย โโโ clibraries
โย ย โย ย โโโ linux-amd64
โย ย โย ย โโโ include
โย ย โย ย โย ย โโโ cpufeatures.h
โย ย โย ย โย ย โโโ ffi.h
โย ย โย ย โย ย โโโ ffitarget.h
โย ย โย ย โย ย โโโ svm_libffi.h
โย ย โย ย โย ย โโโ trufflenfi.h
โย ย โย ย โโโ libffi.a
โย ย โย ย โโโ libjvm.a
โย ย โย ย โโโ liblibchelper.a
โย ย โย ย โโโ libstrictmath.a
โย ย โโโ library-support.jar
โย ย โโโ macros
โย ย โโโ graalvm-native-clang++-launcher
โย ย โย ย โโโ native-image.properties
โย ย โโโ graalvm-native-clang-launcher
โย ย โย ย โโโ native-image.properties
โย ย โโโ gu-launcher
โย ย โย ย โโโ native-image.properties
โย ย โโโ js-launcher
โย ย โย ย โโโ native-image.properties
โย ย โย ย โโโ polyglot.config
โย ย โโโ jvmcicompiler-library
โย ย โย ย โโโ native-image.properties
โย ย โโโ lli-launcher
โย ย โย ย โโโ native-image.properties
โย ย โย ย โโโ polyglot.config
โย ย โโโ polyglot-launcher
โย ย โย ย โโโ native-image.properties
โย ย โโโ polyglot-library
โย ย โย ย โโโ native-image.properties
โย ย โโโ truffle
โย ย โโโ native-image.properties
โโโ truffle
โย ย โโโ locator.jar
โย ย โโโ locator.src.zip
โย ย โโโ truffle-api.jar
โย ย โโโ truffle-api.src.zip
โย ย โโโ truffle-dsl-processor.jar
โย ย โโโ truffle-dsl-processor.src.zip
โย ย โโโ truffle-tck.jar
โย ย โโโ truffle-tck.src.zip
โโโ tzdb.dat
36 directories, 188 files
I had a bit more closer look at your logs. So:
[INFO] [io.quarkus.creator.phase.runnerjar.RunnerJarPhase] Building jar: C:\git\Trend-Radar\instantmobile-quarkus\target\instantmobile-1.0-SNAPSHOT-runner.jar
[INFO]
So you are building the native-image on Windows OS? Of course using docker. And then copying over that generated native-image to some other (linux?) system and running/launching it from there?
By the way, does that exception occur when you hit some rest endpoint? If so, we can sort this out very quickly if you can add the following statement as the first line in your rest endpoint method, before doing the other implementation:
System.out.println("Java library path is set to " + System.getProperty("java.library.path"));
If you can get that output log when you launch your application, then we will know what exactly is going on.
Some infos about my environment:
I did an additional successful test (without docker build):
So for me it seams to be an issue with the docker build.
The error only occurs if the native image, built with the docker build, is started.
You asked me when the exception occurs - it occurs on application startup (no REST endpoint).
Flyway db migration is automatically started at application startup and tries to migrate the database.
@jaikiran Are you able to reproduce the issue?
I have an other running solution, using a multistage docker build.
This works without any errors.
## Stage 1 : build with maven builder image with native capabilities
FROM quay.io/quarkus/centos-quarkus-maven:19.2.1 AS build
COPY src /usr/src/app/src
COPY pom.xml /usr/src/app
COPY settings.xml /usr/src/app
USER root
RUN chown -R quarkus /usr/src/app
USER quarkus
RUN mvn -f /usr/src/app/pom.xml -s /usr/src/app/settings.xml -Pnative clean package
## Stage 2 : ssl-libs
FROM quay.io/quarkus/ubi-quarkus-native-image:19.2.1 as nativebuilder
RUN mkdir -p /tmp/ssl-libs/lib \
&& cp /opt/graalvm/jre/lib/security/cacerts /tmp/ssl-libs \
&& cp /opt/graalvm/jre/lib/amd64/libsunec.so /tmp/ssl-libs/lib/
## Stage 3 : 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
COPY --from=nativebuilder /tmp/ssl-libs/ /work/
RUN chmod 775 /work
EXPOSE 8080
CMD ["./application", "-Dquarkus.http.host=0.0.0.0", "-Djava.library.path=/work/lib", "-Djavax.net.ssl.trustStore=/work/cacerts"]
So the error remaining is using the native image docker build and then building and running the docker-image or running it directly inside WSL in Windows10.
mvn package -Pnative -Dnative-image.docker-build=true
docker build -f src/main/docker/Dockerfile.native -t quarkus/instantmobile .
docker run -i --rm -p 8080:8080 --name instantmobile quarkus/instantmobile
@haraldatbmw Thank you for the detailed information. I have been able to correlate this back to the code which sets up this infrastructure. I do see that there is an issue in the way this is done. However, I don't see any other way out, other than probably adding a prominent note explain these issues in the guide. Before getting to that though, I want to make sure I've understood the code correctly, so I'm just waiting for some spare time that I can spend on this. Probably later this weekend, if no one else gets to it.
Most helpful comment
I have an other running solution, using a multistage docker build.
This works without any errors.