reactor / BlockHound

Java agent to detect blocking calls from non-blocking threads.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BlockHoundTestExecutionListener could not be instantiated (JDK 17)

kressi opened this issue · comments

Expected Behavior

BlockHoundTestExecutionListener can be instantiated

Actual Behavior

Error:  Please refer to /home/runner/work/blockhound-issue/blockhound-issue/target/surefire-reports for the individual test results.
Error:  Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
Error: [ERROR] There was an error in the forked process
Error:  java.util.ServiceConfigurationError: org.junit.platform.launcher.TestExecutionListener: Provider reactor.blockhound.junit.platform.BlockHoundTestExecutionListener could not be instantiated
Error:  org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
Error:  java.util.ServiceConfigurationError: org.junit.platform.launcher.TestExecutionListener: Provider reactor.blockhound.junit.platform.BlockHoundTestExecutionListener could not be instantiated

Steps to Reproduce

Add blockhound and JUnit dependencies to minimal Sprint Boot project and run tests on JDK 17.

Possible Solution

Your Environment

  • Reactor version(s) used:
  • Other relevant libraries versions (eg. netty, ...): Spring boot dependencies 2.7.6
  • JVM version JDK 17:
  • OS and version (eg uname -a): Ubuntu

https://github.com/kressi/blockhound-issue/blob/main/pom.xml

Hi,
any workaround exist for this ?

Hi @kressi ,

I tested your sample project using the following plugin and it seems to work with jdk17 (see #33 for more information).

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                    <argLine>-XX:+AllowRedefinitionToAddDeleteMethods</argLine>
                </configuration>
            </plugin>

Please confirm that it also works for you ?
thanks.

@kressi ,

so, I'm closing this issue. For the reference, here is the modified pom.xml which I think solves the problem
The documentation has been updated with a special note about using JDK13+ versions in #312.
(reopen this issue if needed, thanks).

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>3.0.0</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.github.kressi</groupId>
        <artifactId>blockhound-issue</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>blockhound-issue</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>17</java.version>
            <blockhound.version>1.0.6.RELEASE</blockhound.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>io.projectreactor</groupId>
                <artifactId>reactor-core</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.projectreactor.tools</groupId>
                <artifactId>blockhound</artifactId>
                <version>${blockhound.version}</version>
            </dependency>
            <dependency>
                <groupId>io.projectreactor.tools</groupId>
                <artifactId>blockhound-junit-platform</artifactId>
                <version>${blockhound.version}</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.2</version>
                    <configuration>
                        <argLine>-XX:+AllowRedefinitionToAddDeleteMethods</argLine>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>