microsoft / microsoft/vscode-java-test

[BUG] IllegalAccessException: module java.base does not open java.lang to unnamed module

Open
#1,878 3 comments 0 reactions 1 assignee View on GitHub

@wenytang-ms is already working on this.

Since Jul 6, 2026.

ai-triaged gradle junit test-execution ux
Dominant language
TypeScript
Stars
340
Forks
173
Avg merge
1d 19h
Merged PRs (30d)
18

Description

I've been solving the testing problem through your extension for two days, and I've been getting this error:

org.gradle.api.GradleException: Could not inject synthetic classes.
 at org.gradle.initialization.DefaultLegacyTypesSupport.injectEmptyInterfacesIntoClassLoader([DefaultLegacyTypesSupport.java:108](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
 at org.gradle.testfixtures.internal.ProjectBuilderImpl.getGlobalServices([ProjectBuilderImpl.java:269](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
 at org.gradle.testfixtures.internal.ProjectBuilderImpl.createProject([ProjectBuilderImpl.java:162](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
 at org.gradle.testfixtures.ProjectBuilder.build([ProjectBuilder.java:121](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
 at net.furfurmc.gradle.minedeployer.tests.tasks.MineDeployTaskTest.pluginRegistersATask([MineDeployTaskTest.java:14](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
Caused by: java.lang.RuntimeException: java.lang.IllegalAccessException: module java.base does not open java.lang to unnamed module @1a451d4d
 at org.gradle.internal.classloader.ClassLoaderUtils$AbstractClassLoaderLookuper.invoke([ClassLoaderUtils.java:156](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
 at org.gradle.internal.classloader.ClassLoaderUtils$LookupClassDefiner.defineClass([ClassLoaderUtils.java:212](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
 at org.gradle.internal.classloader.ClassLoaderUtils.define([ClassLoaderUtils.java:82](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
 at org.gradle.initialization.DefaultLegacyTypesSupport.injectEmptyInterfacesIntoClassLoader([DefaultLegacyTypesSupport.java:105](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
 ... 4 more
Caused by: java.lang.IllegalAccessException: module java.base does not open java.lang to unnamed module @1a451d4d
 at java.base/java.lang.invoke.MethodHandles.privateLookupIn([MethodHandles.java:287](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
 at org.gradle.internal.classloader.ClassLoaderUtils$AbstractClassLoaderLookuper.getLookupForClassLoader([ClassLoaderUtils.java:165](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
 at org.gradle.internal.classloader.ClassLoaderUtils$AbstractClassLoaderLookuper.invoke([ClassLoaderUtils.java:152](vscode-file://vscode-app/e:/Users/Micro/AppData/Local/Programs/Microsoft%20VS%20Code/fcf604774b/resources/app/out/vs/code/electron-browser/workbench/workbench.html))
 ... 7 more

With this code:

@Test
void pluginRegistersATask()
{
    // Create a test project and apply the plugin
    Project project = ProjectBuilder.builder().build();
    project.getPlugins().apply("org.example.filesizediff");

    // Verify the result
    assertNotNull(project.getTasks().findByName("fileSizeDiff"));
}

At the same time, if you run the test using the command: ./gradlew test --no-daemon, then everything runs fine.

It turned out that the problem was in the java command line arguments, I added the following parameters to the extension and it solved the problem:

"java.test.config": {
    "vmArgs": [
        "--add-opens=java.base/java.lang=ALL-UNNAMED",
        "--add-opens=java.base/java.util=ALL-UNNAMED",
        "--add-opens=java.base/java.lang.reflect=ALL-UNNAMED"
    ]
}

This bypass does not solve the problem, as unnamed java code may change from version to version.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.