flapdoodle-oss / de.flapdoodle.embed.mongo

...will provide a platform neutral way for running mongodb in unittests.
Apache License 2.0
907 stars 160 forks source link

Exception on start up - java.lang.NoSuchFieldException: handle #376

Closed kitkars closed 2 years ago

kitkars commented 2 years ago

Hi Guys,

Do you know what is causing this? I am on MacOS (m1) + Java 17

java.lang.NoSuchFieldException: handle
    at java.base/java.lang.Class.getDeclaredField(Class.java:2610)
    at de.flapdoodle.embed.process.runtime.Processes.windowsProcessId(Processes.java:113)
    at de.flapdoodle.embed.process.runtime.Processes.access$200(Processes.java:51)
    at de.flapdoodle.embed.process.runtime.Processes$PidHelper$3.getPid(Processes.java:215)
    at de.flapdoodle.embed.process.runtime.Processes.processId(Processes.java:82)
    at de.flapdoodle.embed.process.runtime.ProcessControl.<init>(ProcessControl.java:65)
    at de.flapdoodle.embed.process.runtime.ProcessControl.start(ProcessControl.java:165)
    at de.flapdoodle.embed.process.runtime.AbstractProcess.<init>(AbstractProcess.java:96)
    at de.flapdoodle.embed.mongo.AbstractMongoProcess.<init>(AbstractMongoProcess.java:53)
    at de.flapdoodle.embed.mongo.MongodProcess.<init>(MongodProcess.java:50)
    at de.flapdoodle.embed.mongo.MongodExecutable.start(MongodExecutable.java:44)
    at de.flapdoodle.embed.mongo.MongodExecutable.start(MongodExecutable.java:34)
    at de.flapdoodle.embed.process.runtime.Executable.start(Executable.java:109)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1930)

My maven dependency

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.kitkars</groupId>
    <artifactId>my-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>my-service</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>de.flapdoodle.embed</groupId>
            <artifactId>de.flapdoodle.embed.mongo</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testcontainers</groupId>
            <artifactId>testcontainers</artifactId>
            <version>1.16.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testcontainers</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>1.16.3</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
michaelmosmann commented 2 years ago

Hi, can you try to run this code:

System.out.println(javax.lang.model.SourceVersion.latest());
michaelmosmann commented 2 years ago

Maybe you should use:

de.flapdoodle.embed de.flapdoodle.embed.mongo test 3.3.3
kitkars commented 2 years ago

Ok Thanks, will test and confirm

codengy commented 2 years ago

Hi,

I have same issue with version 3.4.6

java.lang.NoSuchFieldException: handle
    at java.base/java.lang.Class.getDeclaredField(Class.java:2642)
    at de.flapdoodle.embed.process.runtime.Processes.windowsProcessId(Processes.java:112)
    at de.flapdoodle.embed.process.runtime.Processes.access$200(Processes.java:48)
    at de.flapdoodle.embed.process.runtime.Processes$PidHelper$3.getPid(Processes.java:218)
    at de.flapdoodle.embed.process.runtime.Processes.processId(Processes.java:81)
    at de.flapdoodle.embed.process.runtime.ProcessControl.<init>(ProcessControl.java:65)
    at de.flapdoodle.embed.process.runtime.ProcessControl.start(ProcessControl.java:165)
    at de.flapdoodle.embed.process.runtime.AbstractProcess.<init>(AbstractProcess.java:96)
    at de.flapdoodle.embed.mongo.AbstractMongoProcess.<init>(AbstractMongoProcess.java:53)
    at de.flapdoodle.embed.mongo.MongodProcess.<init>(MongodProcess.java:50)
    at de.flapdoodle.embed.mongo.MongodExecutable.start(MongodExecutable.java:44)
    at de.flapdoodle.embed.mongo.MongodExecutable.start(MongodExecutable.java:34)
    at de.flapdoodle.embed.process.runtime.Executable.start(Executable.java:109)
    at com....EmbeddedMongoConfiguration.startMongo(EmbeddedMongoConfiguration.kt:38)
...
michaelmosmann commented 2 years ago

@codengy which os? which jdk?

codengy commented 2 years ago

MacOS (M1), JDK 17, but app is Java version 8

michaelmosmann commented 2 years ago

@codengy there is a new release.. the problem is not the app code version but the running jdk ..

Moez1010 commented 2 years ago

Yes It's works for me with 3.4.9 , JDK 17

michaelmosmann commented 2 years ago

.. if this is still an issue, please reopen.