-
Notifications
You must be signed in to change notification settings - Fork 251
Description
The current version (v3.2.1263) is not compatible with Java 25 runtime. This is due to an outdated GraalVM/js dependency, which in-turn calls a deprecated JDK-internal method (sun.misc.Unsafe.ensureClassInitialized()), which has now been removed from the OpenJDK Java 25 JRE implementation. (This method was long marked as "deprecated for removal"... and has now been removed).
For downstream projects using typescript-generator with Maven, this Issue can be worked around in your pom.xml file:
<plugin>
<groupId>cz.habarta.typescript-generator</groupId>
<artifactId>typescript-generator-maven-plugin</artifactId>
<version>${typescript-generator-maven-plugin.version}</version>
<!-- ... <configuration> etc .... -->
<dependencies>
<dependency>
<groupId>cz.habarta.typescript-generator</groupId>
<artifactId>typescript-generator-spring</artifactId>
<version>${typescript-generator-maven-plugin.version}</version>
</dependency>
<dependency> <!-- Add this dependency here: -->
<groupId>org.graalvm.js</groupId>
<artifactId>js</artifactId>
<version>25.0.0</version>
<type>pom</type>
</dependency>
</dependencies>
</plugin>This will pull in the updated graalvm dependency at runtime, and the typescript plugin should then work again (it does on my project, at least). I assume there is a Gradle equivalent of the above stanza; feel free to post it as a comment below.
For reference, the full stacktrace of the failing plugin is below:
Caused by: java.lang.NoSuchMethodError: 'void sun.misc.Unsafe.ensureClassInitialized(java.lang.Class)'
at com.oracle.truffle.api.library.LibraryFactory.ensureLibraryInitialized (LibraryFactory.java:384)
at com.oracle.truffle.api.library.LibraryFactory.getUncached (LibraryFactory.java:364)
at com.oracle.truffle.api.library.LibraryFactory.<init> (LibraryFactory.java:210)
at com.oracle.truffle.api.interop.InteropLibraryGen.<init> (InteropLibraryGen.java:175)
at com.oracle.truffle.api.interop.InteropLibraryGen.<clinit> (InteropLibraryGen.java:166)
at java.lang.Class.forName0 (Native Method)
at java.lang.Class.forName (Class.java:547)
at com.oracle.truffle.api.library.LibraryFactory.loadGeneratedClass (LibraryFactory.java:791)
at com.oracle.truffle.api.library.LibraryFactory.resolveImpl (LibraryFactory.java:740)
at com.oracle.truffle.api.library.LibraryFactory.resolve (LibraryFactory.java:733)
at com.oracle.truffle.api.interop.InteropLibrary.<clinit> (InteropLibrary.java:2873)
at com.oracle.truffle.polyglot.PolyglotValueDispatch.<clinit> (PolyglotValueDispatch.java:156)
at com.oracle.truffle.polyglot.PolyglotImpl.initialize (PolyglotImpl.java:166)
at org.graalvm.polyglot.impl.AbstractPolyglotImpl.setConstructors (AbstractPolyglotImpl.java:271)
at org.graalvm.polyglot.Engine$1.loadAndValidateProviders (Engine.java:940)
at org.graalvm.polyglot.Engine$1.run (Engine.java:900)
at org.graalvm.polyglot.Engine$1.run (Engine.java:894)
at java.security.AccessController.doPrivileged (AccessController.java:74)
at org.graalvm.polyglot.Engine.initEngineImpl (Engine.java:894)
at org.graalvm.polyglot.Engine$ImplHolder.<clinit> (Engine.java:139)
at org.graalvm.polyglot.Engine.getImpl (Engine.java:363)
at org.graalvm.polyglot.Engine$Builder.build (Engine.java:621)
at cz.habarta.typescript.generator.compiler.SymbolTable.getCustomTypeNamingFunction (SymbolTable.java:211)
at cz.habarta.typescript.generator.compiler.SymbolTable.getMappedNamespacedName (SymbolTable.java:148)
at cz.habarta.typescript.generator.compiler.SymbolTable.setSymbolQualifiedName (SymbolTable.java:128)
at cz.habarta.typescript.generator.compiler.SymbolTable.resolveSymbolNames (SymbolTable.java:93)
at cz.habarta.typescript.generator.compiler.ModelCompiler.javaToTypeScript (ModelCompiler.java:191)
at cz.habarta.typescript.generator.TypeScriptGenerator.generateTypeScript (TypeScriptGenerator.java:74)
at cz.habarta.typescript.generator.maven.GenerateMojo.execute (GenerateMojo.java:991)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke (Method.java:565)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)