Skip to content

Testing java modules throws java.lang.IllegalAccessError #1227

@chiquitinxx

Description

@chiquitinxx

Trying to run Spock 2 to test some java module, using Java 15, I get this error. I think the exception in clear, using a class that junit is not allowing to use outside junit. Let me know if you need a full maven project to reproduce.

TestEngine with ID 'spock' failed to discover tests
org.junit.platform.commons.JUnitException: TestEngine with ID 'spock' failed to discover tests
	at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:111)
	at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:85)
	at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:92)
	at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:67)
	at org.apache.maven.surefire.junitplatform.TestPlanScannerFilter.accept(TestPlanScannerFilter.java:56)
	at org.apache.maven.surefire.api.util.DefaultScanResult.applyFilter(DefaultScanResult.java:102)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.scanClasspath(JUnitPlatformProvider.java:147)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:128)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:428)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:562)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:548)
Caused by: java.lang.IllegalAccessError: class org.spockframework.runtime.SpockNode (in module org.spockframework.core) cannot access class org.junit.platform.commons.util.ClassUtils (in module org.junit.platform.commons) because module org.junit.platform.commons does not export org.junit.platform.commons.util to module org.spockframework.core
	at [email protected]/org.spockframework.runtime.SpockNode.featureToMethodSource(SpockNode.java:94)
	at [email protected]/org.spockframework.runtime.ParameterizedFeatureNode.<init>(ParameterizedFeatureNode.java:19)
	at [email protected]/org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.describeParameterizedFeature(SpockEngineDiscoveryPostProcessor.java:31)
	at [email protected]/org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.createNode(SpockEngineDiscoveryPostProcessor.java:23)
	at [email protected]/org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.lambda$processSpecNode$2(SpockEngineDiscoveryPostProcessor.java:58)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
	at [email protected]/org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.processSpecNode(SpockEngineDiscoveryPostProcessor.java:59)
	at [email protected]/org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.lambda$postProcessEngineDescriptor$0(SpockEngineDiscoveryPostProcessor.java:16)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
	at [email protected]/org.spockframework.runtime.SpockEngineDiscoveryPostProcessor.postProcessEngineDescriptor(SpockEngineDiscoveryPostProcessor.java:17)
	at [email protected]/org.spockframework.runtime.SpockEngine.discover(SpockEngine.java:31)
	at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:103)
	... 11 more

Using a module-info like this in src/test/groovy:

open module test.module {
    exports test.module;

    requires java.desktop;
    requires module.toTest;

    requires org.spockframework.core;
    requires org.junit.jupiter.engine;
    requires org.junit.platform.commons;
}

Additional Environment information

Testing Java modules with spock 2

Java/JDK

openjdk version "15.0.1" 2020-10-20
OpenJDK Runtime Environment AdoptOpenJDK (build 15.0.1+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 15.0.1+9, mixed mode, sharing)

Build tool version

Apache Maven

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/jorge/.sdkman/candidates/maven/current
Java version: 15.0.1, vendor: AdoptOpenJDK, runtime: /Users/jorge/.sdkman/candidates/java/15.0.1.hs-adpt
Default locale: es_ES, platform encoding: UTF-8
OS name: "mac os x", version: "10.15.7", arch: "x86_64", family: "mac"

Operating System

Catalina Mac

Build-tool dependencies used

Apache Maven

<java.version>15</java.version>
<plugin.gmavenplus>1.11.0</plugin.gmavenplus>
<plugin.surefire>3.0.0-M5</plugin.surefire>
<plugin.compile>3.8.1</plugin.compile>
<groovy.version>3.0.6</groovy.version>
<spock.version>2.0-M4-groovy-3.0</spock.version>
<junit.jupiter>5.7.0</junit.jupiter>

    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <scope>test</scope>
    </dependency>

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions