This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
does anyone know what this error could be?
Fatal error: com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing org.apache.poi.poifs.crypt.agile.AgileEncryptor.confirmPassword(java.lang.String)
Parsing context:
at org.apache.poi.poifs.crypt.agile.AgileEncryptor.confirmPassword(AgileEncryptor.java:84)
https://github.com/moclojer/moclojer/actions/runs/6518574989/job/17704234885?pr=153#step:6:147Indeed:
Detected an instance of Random/SplittableRandom class in the image heap.
is the real thing you should solveI recommend using https://github.com/clj-easy/graal-build-time
I understand why, but I can't solve the problem
I've set the parameters in native-image
:
• --enable-all-security-services
which will be depreciated
• "--initialize-at-run-time=java.security.SecureRandom"
https://github.com/moclojer/moclojer/actions/runs/6524999120/job/17717217017?pr=153#step:7:179 full backtrace
Error: Classes that should be initialized at run time got initialized during image building:
java.security.SecureRandom the class was requested to be initialized at run time (from command line with 'java.security.SecureRandom'). com.sun.jndi.dns.DnsClient caused initialization of this class with the following trace:
at java.security.SecureRandom.<clinit>(SecureRandom.java:158)
at sun.security.jca.JCAUtil$CachedSecureRandomHolder.<clinit>(JCAUtil.java:65)
at sun.security.jca.JCAUtil.getSecureRandom(JCAUtil.java:77)
at com.sun.jndi.dns.DnsClient.<clinit>(DnsClient.java:86)
> sorry for being a noob on the subject, but I'm not finding any content on Google that can help me You should still not use —initialize-at-runtime without arguments. This is deprecated. Look at the library I linked to earlier and use that one
I tried to use it, but I had to release library by library manually - it wasn't automatically reading everything I used in the project > I'll try again
so, we added this,
--allow-incomplete-classpath
--features=clj_easy.graal_build_time.InitClojureClasses
--enable-all-security-services
--initialize-at-run-time=java.security.SecureRandom
--initialize-at-run-time=org.apache.poi.util.RandomSingleton
--initialize-at-run-time=com.fasterxml.jackson.core.io.SerializedString
--initialize-at-run-time=sun.security.ssl.SSLContextImpl
--trace-object-instantiation=org.yaml.snakeyaml.DumperOptions$ScalarStyle
--trace-object-instantiation=org.yaml.snakeyaml.DumperOptions$FlowStyle
--initialize-at-build-time=org.yaml.snakeyaml.DumperOptions$FlowStyle
--initialize-at-build-time=org.yaml.snakeyaml.DumperOptions$ScalarStyle
But we had to add initialize-at-run-time= with args for some method/functions and the stacktrace keep asking more.. do you have any idea what we are doing wrong?@UL618PRQ9 It's very likely that a top level expression in your clojure code initializes an object that triggers the initialization of the SecureRandom object
Warning: Using a deprecated option --delay-class-initialization-to-runtime from command line. Use --initialize-at-run-time.
You need to follow back the chain of initialization using these warnings:
com.sun.jndi.dns.DnsClient caused initialization of this class with the following trace
Then add --trace-object-instantiation=com.sun.jndi.dns.DnsClient
until you find another warning like that and then repeatOh my good! https://github.com/moclojer/moclojer/actions/runs/6526012390/job/17719305828?pr=153#step:7:192
that's not necessarily all bad, but you have to figure out what causes the init of com.sun.jndi.dns.DnsClient
So add --trace-object-instantiation=com.sun.jndi.dns.DnsClient
and --trace-class-instantiation=com.sun.jndi.dns.DnsClient
I managed to get the build to "pass", but I'm doing something wrong - I don't think this is the normal process
having to put each library in the runtime init? native-image
is asking for it
--initialize-at-run-time=moclojer.core
--initialize-at-run-time=moclojer.config__init
--initialize-at-run-time=cognitect.transit__init
--initialize-at-run-time=clojure.core.async.impl.concurrent__init
--initialize-at-run-time=clojure.core.async.impl.buffers__init
--initialize-at-run-time=babashka.cli__init
--initialize-at-run-time=io.pedestal.http.body_params__init
--initialize-at-run-time=moclojer.core__init
--initialize-at-run-time=clojure.core.async.impl.exec.threadpool__init
--initialize-at-run-time=clojure.core.async.impl.dispatch__init
--initialize-at-run-time=clojure.core.async.impl.concurrent__init
--initialize-at-run-time=moclojer.server__init
--initialize-at-run-time=clojure.core.async.impl.channels__init
--initialize-at-run-time=moclojer.router__init
--initialize-at-run-time=clojure.core.async__init
--initialize-at-run-time=clojure.core.async.impl.timers__init
--initialize-at-run-time=io.pedestal.http__init
--initialize-at-run-time=clojure.core.async.impl.ioc_macros__init
--initialize-at-run-time=moclojer.specs.moclojer__init
--initialize-at-run-time=io.pedestal.http.cors__init
--initialize-at-run-time=io.pedestal.http.impl.servlet_interceptor__init
--initialize-at-run-time=io.pedestal.http.jetty.container__init
--initialize-at-run-time=io.pedestal.http.jetty__init
--initialize-at-run-time=moclojer.watcher__init
--initialize-at-run-time=io.pedestal.http.route__init
--initialize-at-run-time=io.pedestal.interceptor.chain__init
--initialize-at-run-time=clojure.reflect.java__init
--initialize-at-run-time=clojure.datafy__init
--initialize-at-run-time=clojure.data.json__init
--initialize-at-run-time=clojure.core.cache__init
--initialize-at-run-time=clojure.tools.analyzer.jvm.utils__init
--initialize-at-run-time=clojure.reflect__init
--initialize-at-run-time=clojure.core.memoize__init
--initialize-at-run-time=clojure.tools.analyzer.jvm__init
--initialize-at-run-time=clojure.tools.analyzer.passes.jvm.analyze_host_expr__init
--initialize-at-run-time=clojure.tools.analyzer.passes.jvm.annotate_host_info__init
--initialize-at-run-time=clojure.tools.analyzer.passes.jvm.annotate_tag__init
--initialize-at-run-time=clojure.tools.analyzer.passes.jvm.box__init
--initialize-at-run-time=clojure.tools.analyzer.passes.jvm.classify_invoke__init
--initialize-at-run-time=clojure.tools.analyzer.passes.jvm.constant_lifter__init
--initialize-at-run-time=clojure.tools.analyzer.passes.jvm.infer_tag__init
--initialize-at-run-time=clojure.tools.analyzer.passes.jvm.validate__init
--initialize-at-run-time=clojure.tools.analyzer.passes.jvm.validate_loop_locals__init
--initialize-at-run-time=clojure.tools.analyzer.passes.jvm.warn_on_reflection__init
--initialize-at-run-time=io.pedestal.http.request.servlet_support__init
--initialize-at-run-time=clojure.pprint.dispatch__init
--initialize-at-run-time=clojure.stacktrace__init
--initialize-at-run-time=moclojer.io_utils__init
--initialize-at-run-time=flatland.ordered.map__init
--trace-class-initialization=clojure.core.async.impl.exec.threadpool__init
--trace-class-initialization=moclojer.config__init,clojure.core.async.impl.concurrent__init,babashka.cli__init
--trace-class-initialization=cognitect.transit__init
--trace-class-initialization=io.pedestal.http.body_params__init,clojure.core.async.impl.dispatch__init,clojure.core.async.impl.buffers__init,cognitect.transit__init
--trace-class-initialization=clojure.core.async.impl.channels__init
--trace-class-initialization=clojure.core.async.impl.timers__init
--trace-class-initialization=clojure.core.async__init
--trace-class-initialization=clojure.core.async.impl.ioc_macros__init
--trace-class-initialization=io.pedestal.http.jetty.container__init
--trace-class-initialization=clojure.tools.analyzer.jvm.utils__init,clojure.core.cache__init,clojure.datafy__init,clojure.reflect.java__init
--trace-class-initialization=clojure.reflect__init,clojure.core.memoize__init
--trace-class-initialization=clojure.tools.analyzer.passes.jvm.analyze_host_expr__init
--trace-class-initialization=clojure.tools.analyzer.passes.jvm.annotate_host_info__init
--trace-class-initialization=clojure.tools.analyzer.passes.jvm.annotate_tag__init
--trace-class-initialization=clojure.tools.analyzer.passes.jvm.box__init
--trace-class-initialization=clojure.tools.analyzer.passes.jvm.classify_invoke__init
--trace-class-initialization=clojure.tools.analyzer.passes.jvm.constant_lifter__init
--trace-class-initialization=clojure.tools.analyzer.passes.jvm.infer_tag__init
--trace-class-initialization=clojure.tools.analyzer.passes.jvm.validate__init
--trace-class-initialization=clojure.tools.analyzer.passes.jvm.validate_loop_locals__init
--trace-class-initialization=clojure.tools.analyzer.passes.jvm.warn_on_reflection__init
--trace-class-initialization=clojure.stacktrace__init
--trace-class-initialization=clojure.pprint.dispatch__init
--trace-class-initialization=flatland.ordered.map__init