[graalvm-users] [External] : java.lang.Thread.sleep() supported in GraalVM?

Eric Samson erix.samson at gmail.com
Tue Oct 17 09:13:17 UTC 2023


 I don't know if it can help, but I was able to package my Groovy Swing app
with JPackage. The only difficulty was to identify which Groovy jars were
needed.
Then creating the installer worked fine and I can run the installed exe.

But if I understand well, this is not "real" native compilation, and launch
time still is too big for what I need. That's
------------------------------
*De :* Eric Samson <erix.samson at gmail.com>
*Envoyé :* mardi 17 octobre 2023 10:10
*À :* Gilles DUBOSCQ <gilles.m.duboscq at oracle.com>; Eric Samson <
erix.samson at gmail.com>
*Cc :* graalvm-users at oss.oracle.com <graalvm-users at oss.oracle.com>
*Objet :* Re: [graalvm-users] [External] : java.lang.Thread.sleep()
supported in GraalVM?

Hi Gilles and Christian,

I'm a bit lost now.
I'm going to try 2 things:

   - Migrate my simple Groovy Swing app to pure Java and see if it works.
   - Create a very simple Groovy app with no Swing and see if it works.

Do you have other ideas to test?

Best regards, Erix.
------------------------------
*De :* Eric Samson via GraalVM-Users <graalvm-users at oss.oracle.com>
*Envoyé :* lundi 16 octobre 2023 20:33
*À :* Gilles DUBOSCQ <gilles.m.duboscq at oracle.com>
*Cc :* graalvm-users at oss.oracle.com <graalvm-users at oss.oracle.com>
*Objet :* Re: [graalvm-users] [External] : java.lang.Thread.sleep()
supported in GraalVM?

I have tried both your suggestions and now the error messages get much more
complicated:

Error: Classes that should be initialized at run time got initialized
during image building:
 org.codehaus.groovy.reflection.CachedClass$3 was unintentionally
initialized at build time. To see why
org.codehaus.groovy.reflection.CachedClass$3 got initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.CachedClass$3
org.codehaus.groovy.runtime.dgmimpl.NumberNumberMultiply was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.NumberNumberMultiply got initialized
use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.NumberNumberMultiply
org.codehaus.groovy.runtime.DefaultGroovyMethods was unintentionally
initialized at build time. To see why
org.codehaus.groovy.runtime.DefaultGroovyMethods got initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.DefaultGroovyMethods
org.codehaus.groovy.util.ReferenceBundle was unintentionally initialized at
build time. To see why org.codehaus.groovy.util.ReferenceBundle got
initialized use
--trace-class-initialization=org.codehaus.groovy.util.ReferenceBundle
org.codehaus.groovy.runtime.dgmimpl.arrays.DoubleArrayPutAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.DoubleArrayPutAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.DoubleArrayPutAtMetaMethod
org.codehaus.groovy.runtime.dgmimpl.arrays.ObjectArrayGetAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.ObjectArrayGetAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.ObjectArrayGetAtMetaMethod
org.codehaus.groovy.vmplugin.v8.IndyInterface was unintentionally
initialized at build time. To see why
org.codehaus.groovy.vmplugin.v8.IndyInterface got initialized use
--trace-class-initialization=org.codehaus.groovy.vmplugin.v8.IndyInterface
org.codehaus.groovy.reflection.stdclasses.IntegerCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.IntegerCachedClass got
initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.IntegerCachedClass
org.codehaus.groovy.runtime.GroovyCategorySupport was unintentionally
initialized at build time. To see why
org.codehaus.groovy.runtime.GroovyCategorySupport got initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.GroovyCategorySupport
org.codehaus.groovy.reflection.CachedClass was unintentionally initialized
at build time. To see why org.codehaus.groovy.reflection.CachedClass got
initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.CachedClass
org.codehaus.groovy.reflection.stdclasses.CachedClosureClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.CachedClosureClass got
initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.CachedClosureClass
org.codehaus.groovy.reflection.stdclasses.NumberCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.NumberCachedClass got initialized
use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.NumberCachedClass
org.codehaus.groovy.reflection.stdclasses.BigIntegerCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.BigIntegerCachedClass got
initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.BigIntegerCachedClass
org.codehaus.groovy.reflection.ClassInfo$LazyClassLoaderRef was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.ClassInfo$LazyClassLoaderRef got initialized
use
--trace-class-initialization=org.codehaus.groovy.reflection.ClassInfo$LazyClassLoaderRef
org.codehaus.groovy.reflection.ReflectionUtils was unintentionally
initialized at build time. To see why
org.codehaus.groovy.reflection.ReflectionUtils got initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.ReflectionUtils
org.codehaus.groovy.reflection.GroovyClassValueFactory was unintentionally
initialized at build time. To see why
org.codehaus.groovy.reflection.GroovyClassValueFactory got initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.GroovyClassValueFactory
org.codehaus.groovy.reflection.CachedClass$6 was unintentionally
initialized at build time. To see why
org.codehaus.groovy.reflection.CachedClass$6 got initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.CachedClass$6
org.codehaus.groovy.vmplugin.v9.Java9 was unintentionally initialized at
build time. To see why org.codehaus.groovy.vmplugin.v9.Java9 got
initialized use
--trace-class-initialization=org.codehaus.groovy.vmplugin.v9.Java9
org.codehaus.groovy.runtime.dgmimpl.arrays.ShortArrayGetAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.ShortArrayGetAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.ShortArrayGetAtMetaMethod
org.codehaus.groovy.runtime.dgmimpl.arrays.CharacterArrayGetAtMetaMethod
was unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.CharacterArrayGetAtMetaMethod
got initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.CharacterArrayGetAtMetaMethod
org.codehaus.groovy.util.LazyReference was unintentionally initialized at
build time. To see why org.codehaus.groovy.util.LazyReference got
initialized use
--trace-class-initialization=org.codehaus.groovy.util.LazyReference
org.codehaus.groovy.runtime.dgmimpl.arrays.ShortArrayPutAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.ShortArrayPutAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.ShortArrayPutAtMetaMethod
org.codehaus.groovy.runtime.dgmimpl.arrays.LongArrayPutAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.LongArrayPutAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.LongArrayPutAtMetaMethod
org.codehaus.groovy.reflection.stdclasses.CharacterCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.CharacterCachedClass got
initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.CharacterCachedClass
org.codehaus.groovy.reflection.stdclasses.DoubleCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.DoubleCachedClass got initialized
use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.DoubleCachedClass
org.codehaus.groovy.reflection.ClassInfo$LazyCachedClassRef was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.ClassInfo$LazyCachedClassRef got initialized
use
--trace-class-initialization=org.codehaus.groovy.reflection.ClassInfo$LazyCachedClassRef
org.codehaus.groovy.runtime.dgmimpl.NumberNumberDiv was unintentionally
initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.NumberNumberDiv got initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.NumberNumberDiv
org.codehaus.groovy.util.ReferenceType$2 was unintentionally initialized at
build time. To see why org.codehaus.groovy.util.ReferenceType$2 got
initialized use
--trace-class-initialization=org.codehaus.groovy.util.ReferenceType$2
groovy.lang.MetaClassImpl was unintentionally initialized at build time. To
see why groovy.lang.MetaClassImpl got initialized use
--trace-class-initialization=groovy.lang.MetaClassImpl
org.codehaus.groovy.runtime.dgmimpl.arrays.FloatArrayPutAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.FloatArrayPutAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.FloatArrayPutAtMetaMethod
com.sun.beans.util.Cache$Kind$1 was unintentionally initialized at build
time. To see why com.sun.beans.util.Cache$Kind$1 got initialized use
--trace-class-initialization=com.sun.beans.util.Cache$Kind$1
org.codehaus.groovy.reflection.stdclasses.ArrayCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.ArrayCachedClass got initialized
use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.ArrayCachedClass
org.codehaus.groovy.runtime.dgmimpl.NumberNumberMinus was unintentionally
initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.NumberNumberMinus got initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.NumberNumberMinus
org.codehaus.groovy.reflection.stdclasses.CachedSAMClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.CachedSAMClass got initialized
use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.CachedSAMClass
org.codehaus.groovy.runtime.dgmimpl.NumberNumberPlus was unintentionally
initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.NumberNumberPlus got initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.NumberNumberPlus
org.codehaus.groovy.util.ReferenceType$1 was unintentionally initialized at
build time. To see why org.codehaus.groovy.util.ReferenceType$1 got
initialized use
--trace-class-initialization=org.codehaus.groovy.util.ReferenceType$1
org.codehaus.groovy.reflection.CachedClass$4 was unintentionally
initialized at build time. To see why
org.codehaus.groovy.reflection.CachedClass$4 got initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.CachedClass$4
groovy.lang.GroovySystem was unintentionally initialized at build time. To
see why groovy.lang.GroovySystem got initialized use
--trace-class-initialization=groovy.lang.GroovySystem
org.codehaus.groovy.vmplugin.VMPluginFactory was unintentionally
initialized at build time. To see why
org.codehaus.groovy.vmplugin.VMPluginFactory got initialized use
--trace-class-initialization=org.codehaus.groovy.vmplugin.VMPluginFactory
org.codehaus.groovy.vmplugin.v8.IndyInterface$CallType was unintentionally
initialized at build time. To see why
org.codehaus.groovy.vmplugin.v8.IndyInterface$CallType got initialized use
--trace-class-initialization=org.codehaus.groovy.vmplugin.v8.IndyInterface$CallType
org.codehaus.groovy.reflection.ReflectionCache was unintentionally
initialized at build time. To see why
org.codehaus.groovy.reflection.ReflectionCache got initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.ReflectionCache
org.codehaus.groovy.util.ReferenceType$4 was unintentionally initialized at
build time. To see why org.codehaus.groovy.util.ReferenceType$4 got
initialized use
--trace-class-initialization=org.codehaus.groovy.util.ReferenceType$4
org.codehaus.groovy.runtime.m12n.SimpleExtensionModule was unintentionally
initialized at build time. To see why
org.codehaus.groovy.runtime.m12n.SimpleExtensionModule got initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.m12n.SimpleExtensionModule
org.codehaus.groovy.runtime.m12n.MetaInfExtensionModule was unintentionally
initialized at build time. To see why
org.codehaus.groovy.runtime.m12n.MetaInfExtensionModule got initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.m12n.MetaInfExtensionModule
org.codehaus.groovy.runtime.dgmimpl.NumberNumberMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.NumberNumberMetaMethod got initialized
use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.NumberNumberMetaMethod
org.codehaus.groovy.runtime.MetaClassHelper was unintentionally initialized
at build time. To see why org.codehaus.groovy.runtime.MetaClassHelper got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.MetaClassHelper
org.codehaus.groovy.util.ReferenceType$3 was unintentionally initialized at
build time. To see why org.codehaus.groovy.util.ReferenceType$3 got
initialized use
--trace-class-initialization=org.codehaus.groovy.util.ReferenceType$3
org.codehaus.groovy.runtime.dgmimpl.arrays.ObjectArrayPutAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.ObjectArrayPutAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.ObjectArrayPutAtMetaMethod
org.codehaus.groovy.runtime.dgmimpl.arrays.LongArrayGetAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.LongArrayGetAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.LongArrayGetAtMetaMethod
com.sun.beans.util.Cache$Kind$3 was unintentionally initialized at build
time. To see why com.sun.beans.util.Cache$Kind$3 got initialized use
--trace-class-initialization=com.sun.beans.util.Cache$Kind$3
org.codehaus.groovy.reflection.stdclasses.BooleanCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.BooleanCachedClass got
initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.BooleanCachedClass
org.codehaus.groovy.reflection.CachedClass$1 was unintentionally
initialized at build time. To see why
org.codehaus.groovy.reflection.CachedClass$1 got initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.CachedClass$1
org.codehaus.groovy.reflection.CachedClass$7 was unintentionally
initialized at build time. To see why
org.codehaus.groovy.reflection.CachedClass$7 got initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.CachedClass$7
org.codehaus.groovy.runtime.dgmimpl.arrays.FloatArrayGetAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.FloatArrayGetAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.FloatArrayGetAtMetaMethod
org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayPutAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayPutAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayPutAtMetaMethod
org.codehaus.groovy.reflection.stdclasses.BigDecimalCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.BigDecimalCachedClass got
initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.BigDecimalCachedClass
org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayGetAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayGetAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayGetAtMetaMethod
org.codehaus.groovy.runtime.dgmimpl.arrays.IntegerArrayPutAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.IntegerArrayPutAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.IntegerArrayPutAtMetaMethod
org.codehaus.groovy.runtime.dgmimpl.arrays.BooleanArrayGetAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.BooleanArrayGetAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.BooleanArrayGetAtMetaMethod
org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayMetaMethod got initialized
use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayMetaMethod
org.codehaus.groovy.runtime.DefaultGroovyMethodsSupport was unintentionally
initialized at build time. To see why
org.codehaus.groovy.runtime.DefaultGroovyMethodsSupport got initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.DefaultGroovyMethodsSupport
org.codehaus.groovy.vmplugin.v8.Java8 was unintentionally initialized at
build time. To see why org.codehaus.groovy.vmplugin.v8.Java8 got
initialized use
--trace-class-initialization=org.codehaus.groovy.vmplugin.v8.Java8
com.sun.beans.introspect.ClassInfo was unintentionally initialized at build
time. To see why com.sun.beans.introspect.ClassInfo got initialized use
--trace-class-initialization=com.sun.beans.introspect.ClassInfo
org.codehaus.groovy.vmplugin.v8.CacheableCallSite was unintentionally
initialized at build time. To see why
org.codehaus.groovy.vmplugin.v8.CacheableCallSite got initialized use
--trace-class-initialization=org.codehaus.groovy.vmplugin.v8.CacheableCallSite
org.codehaus.groovy.vmplugin.v16.Java16 was unintentionally initialized at
build time. To see why org.codehaus.groovy.vmplugin.v16.Java16 got
initialized use
--trace-class-initialization=org.codehaus.groovy.vmplugin.v16.Java16
org.codehaus.groovy.reflection.CachedClass$5 was unintentionally
initialized at build time. To see why
org.codehaus.groovy.reflection.CachedClass$5 got initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.CachedClass$5
org.codehaus.groovy.reflection.stdclasses.StringCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.StringCachedClass got initialized
use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.StringCachedClass
java.beans.Introspector was unintentionally initialized at build time. To
see why java.beans.Introspector got initialized use
--trace-class-initialization=java.beans.Introspector
org.codehaus.groovy.runtime.dgmimpl.arrays.ByteArrayPutAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.ByteArrayPutAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.ByteArrayPutAtMetaMethod
com.sun.beans.util.Cache$Kind was unintentionally initialized at build
time. To see why com.sun.beans.util.Cache$Kind got initialized use
--trace-class-initialization=com.sun.beans.util.Cache$Kind
org.codehaus.groovy.runtime.dgmimpl.arrays.DoubleArrayGetAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.DoubleArrayGetAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.DoubleArrayGetAtMetaMethod
org.codehaus.groovy.reflection.CachedClass$2 was unintentionally
initialized at build time. To see why
org.codehaus.groovy.reflection.CachedClass$2 got initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.CachedClass$2
org.codehaus.groovy.util.ReferenceType was unintentionally initialized at
build time. To see why org.codehaus.groovy.util.ReferenceType got
initialized use
--trace-class-initialization=org.codehaus.groovy.util.ReferenceType
org.codehaus.groovy.runtime.dgmimpl.arrays.ByteArrayGetAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.ByteArrayGetAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.ByteArrayGetAtMetaMethod
com.sun.beans.util.Cache$Kind$2 was unintentionally initialized at build
time. To see why com.sun.beans.util.Cache$Kind$2 got initialized use
--trace-class-initialization=com.sun.beans.util.Cache$Kind$2
org.codehaus.groovy.reflection.CachedClass$8 was unintentionally
initialized at build time. To see why
org.codehaus.groovy.reflection.CachedClass$8 got initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.CachedClass$8
org.codehaus.groovy.reflection.stdclasses.LongCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.LongCachedClass got initialized
use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.LongCachedClass
org.codehaus.groovy.reflection.stdclasses.FloatCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.FloatCachedClass got initialized
use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.FloatCachedClass
org.codehaus.groovy.reflection.ClassInfo was unintentionally initialized at
build time. To see why org.codehaus.groovy.reflection.ClassInfo got
initialized use
--trace-class-initialization=org.codehaus.groovy.reflection.ClassInfo
org.codehaus.groovy.reflection.stdclasses.ObjectCachedClass was
unintentionally initialized at build time. To see why
org.codehaus.groovy.reflection.stdclasses.ObjectCachedClass got initialized
use
--trace-class-initialization=org.codehaus.groovy.reflection.stdclasses.ObjectCachedClass
org.apache.groovy.plugin.GroovyRunnerRegistry was unintentionally
initialized at build time. To see why
org.apache.groovy.plugin.GroovyRunnerRegistry got initialized use
--trace-class-initialization=org.apache.groovy.plugin.GroovyRunnerRegistry
org.codehaus.groovy.vmplugin.v10.Java10 was unintentionally initialized at
build time. To see why org.codehaus.groovy.vmplugin.v10.Java10 got
initialized use
--trace-class-initialization=org.codehaus.groovy.vmplugin.v10.Java10
org.codehaus.groovy.runtime.dgmimpl.arrays.CharacterArrayPutAtMetaMethod
was unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.CharacterArrayPutAtMetaMethod
got initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.CharacterArrayPutAtMetaMethod
org.codehaus.groovy.runtime.dgmimpl.arrays.BooleanArrayPutAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.BooleanArrayPutAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.BooleanArrayPutAtMetaMethod
org.codehaus.groovy.runtime.dgmimpl.arrays.IntegerArrayGetAtMetaMethod was
unintentionally initialized at build time. To see why
org.codehaus.groovy.runtime.dgmimpl.arrays.IntegerArrayGetAtMetaMethod got
initialized use
--trace-class-initialization=org.codehaus.groovy.runtime.dgmimpl.arrays.IntegerArrayGetAtMetaMethod
To see how the classes got initialized, use
--trace-class-initialization=org.codehaus.groovy.reflection.CachedClass$3,org.codehaus.groovy.runtime.dgmimpl.NumberNumberMultiply,org.codehaus.groovy.runtime.DefaultGroovyMethods,org.codehaus.groovy.util.ReferenceBundle,org.codehaus.groovy.runtime.dgmimpl.arrays.DoubleArrayPutAtMetaMethod,org.codehaus.groovy.runtime.dgmimpl.arrays.ObjectArrayGetAtMetaMethod,org.codehaus.groovy.vmplugin.v8.IndyInterface,org.codehaus.groovy.reflection.stdclasses.IntegerCachedClass,org.codehaus.groovy.runtime.GroovyCategorySupport,org.codehaus.groovy.reflection.CachedClass,org.codehaus.groovy.reflection.stdclasses.CachedClosureClass,org.codehaus.groovy.reflection.stdclasses.NumberCachedClass,org.codehaus.groovy.reflection.stdclasses.BigIntegerCachedClass,org.codehaus.groovy.reflection.ClassInfo$LazyClassLoaderRef,org.codehaus.groovy.reflection.ReflectionUtils,org.codehaus.groovy.reflection.GroovyClassValueFactory,org.codehaus.groovy.reflection.CachedClass$6,org.codehaus.groovy.vmplugin.v9.Java9,org.codehaus.groovy.runtime.dgmimpl.arrays.ShortArrayGetAtMetaMethod,org.codehaus.groovy.runtime.dgmimpl.arrays.CharacterArrayGetAtMetaMethod,org.codehaus.groovy.util.LazyReference,org.codehaus.groovy.runtime.dgmimpl.arrays.ShortArrayPutAtMetaMethod,org.codehaus.groovy.runtime.dgmimpl.arrays.LongArrayPutAtMetaMethod,org.codehaus.groovy.reflection.stdclasses.CharacterCachedClass,org.codehaus.groovy.reflection.stdclasses.DoubleCachedClass,org.codehaus.groovy.reflection.ClassInfo$LazyCachedClassRef,org.codehaus.groovy.runtime.dgmimpl.NumberNumberDiv,org.codehaus.groovy.util.ReferenceType$2,groovy.lang.MetaClassImpl,org.codehaus.groovy.runtime.dgmimpl.arrays.FloatArrayPutAtMetaMethod,com.sun.beans.util.Cache$Kind$1,org.codehaus.groovy.reflection.stdclasses.ArrayCachedClass,org.codehaus.groovy.runtime.dgmimpl.NumberNumberMinus,org.codehaus.groovy.reflection.stdclasses.CachedSAMClass,org.codehaus.groovy.runtime.dgmimpl.NumberNumberPlus,org.codehaus.groovy.util.ReferenceType$1,org.codehaus.groovy.reflection.CachedClass$4,groovy.lang.GroovySystem,org.codehaus.groovy.vmplugin.VMPluginFactory,org.codehaus.groovy.vmplugin.v8.IndyInterface$CallType,org.codehaus.groovy.reflection.ReflectionCache,org.codehaus.groovy.util.ReferenceType$4,org.codehaus.groovy.runtime.m12n.SimpleExtensionModule,org.codehaus.groovy.runtime.m12n.MetaInfExtensionModule,org.codehaus.groovy.runtime.dgmimpl.NumberNumberMetaMethod,org.codehaus.groovy.runtime.MetaClassHelper,org.codehaus.groovy.util.ReferenceType$3,org.codehaus.groovy.runtime.dgmimpl.arrays.ObjectArrayPutAtMetaMethod,org.codehaus.groovy.runtime.dgmimpl.arrays.LongArrayGetAtMetaMethod,com.sun.beans.util.Cache$Kind$3,org.codehaus.groovy.reflection.stdclasses.BooleanCachedClass,org.codehaus.groovy.reflection.CachedClass$1,org.codehaus.groovy.reflection.CachedClass$7,org.codehaus.groovy.runtime.dgmimpl.arrays.FloatArrayGetAtMetaMethod,org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayPutAtMetaMethod,org.codehaus.groovy.reflection.stdclasses.BigDecimalCachedClass,org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayGetAtMetaMethod,org.codehaus.groovy.runtime.dgmimpl.arrays.IntegerArrayPutAtMetaMethod,org.codehaus.groovy.runtime.dgmimpl.arrays.BooleanArrayGetAtMetaMethod,org.codehaus.groovy.runtime.dgmimpl.arrays.ArrayMetaMethod,org.codehaus.groovy.runtime.DefaultGroovyMethodsSupport,org.codehaus.groovy.vmplugin.v8.Java8,com.sun.beans.introspect.ClassInfo,org.codehaus.groovy.vmplugin.v8.CacheableCallSite,org.codehaus.groovy.vmplugin.v16.Java16,org.codehaus.groovy.reflection.CachedClass$5,org.codehaus.groovy.reflection.stdclasses.StringCachedClass,java.beans.Introspector,org.codehaus.groovy.runtime.dgmimpl.arrays.ByteArrayPutAtMetaMethod,com.sun.beans.util.Cache$Kind,org.codehaus.groovy.runtime.dgmimpl.arrays.DoubleArrayGetAtMetaMethod,org.codehaus.groovy.reflection.CachedClass$2,org.codehaus.groovy.util.ReferenceType,org.codehaus.groovy.runtime.dgmimpl.arrays.ByteArrayGetAtMetaMethod,com.sun.beans.util.Cache$Kind$2,org.codehaus.groovy.reflection.CachedClass$8,org.codehaus.groovy.reflection.stdclasses.LongCachedClass,org.codehaus.groovy.reflection.stdclasses.FloatCachedClass,org.codehaus.groovy.reflection.ClassInfo,org.codehaus.groovy.reflection.stdclasses.ObjectCachedClass,org.apache.groovy.plugin.GroovyRunnerRegistry,org.codehaus.groovy.vmplugin.v10.Java10,org.codehaus.groovy.runtime.dgmimpl.arrays.CharacterArrayPutAtMetaMethod,org.codehaus.groovy.runtime.dgmimpl.arrays.BooleanArrayPutAtMetaMethod,org.codehaus.groovy.runtime.dgmimpl.arrays.IntegerArrayGetAtMetaMethod

I've watched some Groovy on GraalVM tutorials and it seems to be working,
but there was no AWT / Swing.
Does it mean that Swing + GraalVM is not a valid option? Or is it because
of Groovy + Swing?



------------------------------
*De :* Gilles DUBOSCQ <gilles.m.duboscq at oracle.com>
*Envoyé :* lundi 16 octobre 2023 20:10
*À :* Eric Samson <erix.samson at gmail.com>
*Cc :* graalvm-users at oss.oracle.com <graalvm-users at oss.oracle.com>
*Objet :* Re: [External] : [graalvm-users] java.lang.Thread.sleep()
supported in GraalVM?

It looks like the issue is not with Thread.sleep but Swing/AWT on Windows
(specifically sun.awt.shell.Win32ShellFolderManager2$ComInvoker).

I think it's not a good idea to use --initialize-at-build-time, you're
likely to get into a lot of such corner cases. In general only code that
has been designed for it or has explicit support in native-image works well
under --initialize-at-build-time. I would recommend to use
--initialize-at-build-time only on specific packages or type for which you
know there is a real benefit.
If you really want to initialize everything at build time, maybe you can
try to use --initialize-at-run-time=sun.awt.shell.Win32ShellFolder2

 Gilles
------------------------------
*From:* Eric Samson <erix.samson at gmail.com>
*Sent:* Monday, 16 October 2023 19:10
*To:* Gilles DUBOSCQ <gilles.m.duboscq at oracle.com>
*Cc:* graalvm-users at oss.oracle.com <graalvm-users at oss.oracle.com>
*Subject:* Re: [External] : [graalvm-users] java.lang.Thread.sleep()
supported in GraalVM?

Hi Gilles,

Thanks for the quick reply.
Here is the error message:

*Error*: Detected a started Thread in the image heap. Threads running in
the image generator are no longer running at image runtime.  To see how
this object got instantiated use
--trace-object-instantiation=java.lang.Thread. The object was probably
created by a class initializer and is reachable from a static field. You
can request class initialization at image runtime by using the option
--initialize-at-run-time=<class-name>. Or you can write your own
initialization methods and call them explicitly from your main entry point.

I've tried the option --initialize-at-runtime=java.lang.Thread, without
success.

*StackTrace:*
Trace: Object was reached by
  reading field java.util.concurrent.ThreadPoolExecutor$Worker.thread of
constant
    java.util.concurrent.ThreadPoolExecutor$Worker at 63a4cfd:
java.util.concurrent.ThreadPoolExecutor$Worker at 63a4cfd[State = 1, empty
queue]
  reading field java.util.HashMap$Node.key of constant
    java.util.HashMap$Node at 53798803:
java.util.concurrent.ThreadPoolExecutor$Worker at 63a4cfd[State = 1, empty
queue]=j...
  indexing into array java.util.HashMap$Node[]@2f2400d:
[Ljava.util.HashMap$Node;@2f2400d
  reading field java.util.HashMap.table of constant
    java.util.HashMap at 1ac46e3c:
{java.util.concurrent.ThreadPoolExecutor$Worker at 63a4cfd[State = 1, empty
queue]=...
  reading field java.util.HashSet.map of constant
    java.util.HashSet at 74b3b357:
[java.util.concurrent.ThreadPoolExecutor$Worker at 63a4cfd[State = 1, empty
queue]]
  reading field java.util.concurrent.ThreadPoolExecutor.workers of constant
    sun.awt.shell.Win32ShellFolderManager2$ComInvoker at 7f227548:
sun.awt.shell.Win32ShellFolderManager2$ComInvoker at 7f227548[Running, pool
size = ...
  scanning root sun.awt.shell.Win32ShellFolderManager2$ComInvoker at 7f227548:
sun.awt.shell.Win32ShellFolderManager2$ComInvoker at 7f227548[Running, pool
size = ... embedded in
    sun.awt.shell.ShellFolder.invoke(ShellFolder.java:537)
  parsing method sun.awt.shell.ShellFolder.invoke(ShellFolder.java:537)
reachable via the parsing context
    at sun.awt.shell.Win32ShellFolder2.<init>(Win32ShellFolder2.java:292)
    at
com.oracle.svm.core.code.FactoryMethodHolder.Win32ShellFolder2_constructor_79b7324abf2daa84de416777f746e499d5310ac3(generated:0)
    at
sun.awt.shell.Win32ShellFolderManager2.getDesktop(Win32ShellFolderManager2.java:171)
    at
sun.awt.shell.Win32ShellFolderManager2.isFileSystemRoot(Win32ShellFolderManager2.java:504)
    at
javax.swing.filechooser.FileSystemView.isFileSystemRoot(FileSystemView.java:423)
    at
javax.swing.filechooser.FileSystemView.getFiles(FileSystemView.java:581)
    at
javax.swing.filechooser.FileSystemView.isParent(FileSystemView.java:338)
    at javax.swing.JFileChooser.setSelectedFile(JFileChooser.java:513)
    at javax.swing.JFileChooser.setFileFilter(JFileChooser.java:1472)
    at javax.swing.JFileChooser.setup(JFileChooser.java:398)
    at javax.swing.JFileChooser.<init>(JFileChooser.java:362)
    at
com.oracle.svm.core.code.FactoryMethodHolder.JFileChooser_constructor_0980039f483e9a48b2389d8a4a1a9cd473a16dbd(generated:0)
    at
javax.swing.text.html.FormView$BrowseFileAction.actionPerformed(FormView.java:968)
    at java.awt.MenuItem.processActionEvent(MenuItem.java:692)
    at java.awt.MenuItem.processEvent(MenuItem.java:651)
    at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:379)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    at java.awt.EventQueue$4.run(EventQueue.java:722)
    at java.awt.EventQueue$4.run(EventQueue.java:716)
    at
com.oracle.svm.core.jdk.Target_java_security_AccessController.executePrivileged(SecuritySubstitutions.java:171)
    at sun.font.SunFontManager.<init>(SunFontManager.java:457)
    at sun.awt.Win32FontManager.<init>(Win32FontManager.java:88)
    at
com.oracle.svm.core.code.FactoryMethodHolder.Win32FontManager_constructor_002b6104bcda27602265e5cec50c16a5ebc813af(generated:0)
    at static root method.(Unknown Source)

*My Groovy code snippet:*

@groovy.transform.CompileStatic
class App {
    static void main(String[] args) {
    // some very simple Swing UI init here
    while (true) {
            time = LocalTime.now()
            label.text = " " + time.format("HH:mm:ss")
            Thread.sleep(1000)
        }
 }

*My native-compile command line:*
native-image --report-unsupported-elements-at-runtime
--initialize-at-build-time --trace-class-initialization=java.lang.Thread
--no-fallback -H:ConfigurationFileDirectories=conf/ -cp
".;%GROOVY_HOME%lib\groovy-4.0.9.jar;%GROOVY_HOME%lib\groovy-datetime-4.0.9.jar"
displaytime.App

*My native-agent command line (works well):*
java -agentlib:native-image-agent=config-output-dir=conf/ displaytime.App

*::* Cordialement/Best regards, Erix


Le lun. 16 oct. 2023 à 18:48, Gilles DUBOSCQ <gilles.m.duboscq at oracle.com>
a écrit :

Hi Eric,
Yes Thread.sleep() should work in GraalVM native-image.
It would help to know what kind of error you're seeing exactly.
 Gilles
------------------------------
*From:* Eric Samson via GraalVM-Users <graalvm-users at oss.oracle.com>
*Sent:* Monday, 16 October 2023 18:38
*To:* graalvm-users at oss.oracle.com <graalvm-users at oss.oracle.com>
*Subject:* [External] : [graalvm-users] java.lang.Thread.sleep() supported
in GraalVM?

Hi everyone,

I'm totally new to GraalVM.
I've set up the whole environment for Windows this morning.

I'm now trying to natively compile a Groovy app (with neither dynamic nor
meta programming).
I've been able to compile it and use the native-image-agent to generate the
/conf files.

Now I'm trying to generate the executable and I get an error message due to
the fact I'm using Thread.sleep(x) in my main loop.

Sleep is a static method of the Thread class. I understand there must be
some kind of conflicts between the class being initialized at build-time or
runtime. But I'm not sure how to fix it. I've spent a lot of time in the
GraalVM documentation and several Web sites (stackOverflow, etc.) but could
not find a good example of how to use Thread.sleep in GraalVM.

Sorry for the noob question. Any hint would be greatly appreciated. Thanks
in advance.
Best regards, Erix.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://oss.oracle.com/pipermail/graalvm-users/attachments/20231017/47a110d0/attachment-0001.html>


More information about the GraalVM-Users mailing list