Skip to content

ClassNotFoundException / Missing Java 21 Classes #32

@dhoard

Description

@dhoard

Summary

The 0.0.8 release jar appears to be missing Java 21 classes, resulting in a ClassNotFoundException

Steps to reproduce

  • Upgrade to the 0.0.8 release.
  • Execute code using Java 21.
  • ClassNotFoundException is generated.

Investigation

Inspecting the contents of the 0.0.8 jar, it appears to have missing classes...

0.0.7 jar

> unzip -t virtual-threads-bridge-0.0.7.jar | grep 21
    testing: META-INF/versions/21/    OK
    testing: META-INF/versions/21/io/   OK
    testing: META-INF/versions/21/io/github/   OK
    testing: META-INF/versions/21/io/github/thunkware/   OK
    testing: META-INF/versions/21/io/github/thunkware/vt/   OK
    testing: META-INF/versions/21/io/github/thunkware/vt/bridge/   OK
    testing: META-INF/versions/21/io/github/thunkware/vt/bridge/ThreadProvider21.class   OK
    testing: META-INF/versions/21/io/github/thunkware/vt/bridge/ThreadBuilders21$PlatformThreadBuilder.class   OK
    testing: META-INF/versions/21/io/github/thunkware/vt/bridge/ThreadBuilders21$VirtualThreadBuilder.class   OK
    testing: META-INF/versions/21/io/github/thunkware/vt/bridge/ThreadBuilders21.class   OK

0.0.8 jar

> unzip -t virtual-threads-bridge-0.0.8.jar | grep 21
(no classes)

Local build

Building the project locally, the jar contains Java 21 classes and works correctly.

Exception

java.lang.IllegalStateException: Cannot create ThreadProvider
	at 6bc6660d778dec84d62bc72b295ffd7b.io.github.thunkware.vt.bridge.ThreadProviderFactory.createThreadProvider(ThreadProviderFactory.java:50)
	at 6bc6660d778dec84d62bc72b295ffd7b.io.github.thunkware.vt.bridge.ThreadProviderFactory.getThreadProvider(ThreadProviderFactory.java:18)
	at 6bc6660d778dec84d62bc72b295ffd7b.io.github.thunkware.vt.bridge.ThreadProvider.getThreadProvider(ThreadProvider.java:144)
	at 6bc6660d778dec84d62bc72b295ffd7b.io.github.thunkware.vt.bridge.ThreadTool.hasVirtualThreads(ThreadTool.java:31)
Caused by: java.lang.ClassNotFoundException: 6bc6660d778dec84d62bc72b295ffd7b.io.github.thunkware.vt.bridge.ThreadProvider21
	at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:225)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:210)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:205)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:421)
	at java.base/java.lang.Class.forName(Class.java:412)
	at 6bc6660d778dec84d62bc72b295ffd7b.io.github.thunkware.vt.bridge.ThreadProviderFactory.createThreadProvider(ThreadProviderFactory.java:58)
	at 6bc6660d778dec84d62bc72b295ffd7b.io.github.thunkware.vt.bridge.ThreadProviderFactory.createThreadProvider(ThreadProviderFactory.java:48)
	... 3 more

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions