[ https://issues.apache.org/jira/browse/SUREFIRE-2192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17758267#comment-17758267 ]
Gili commented on SUREFIRE-2192: -------------------------------- As mentioned, the arg file (which I've attached as "surefireargs-20230823182041539_3") places gson on the module-path, and I can confirm that the referenced path exists and seems to be a valid. I'm unsure on how to proceed further. Please help. > Module path missing transitive dependency > ----------------------------------------- > > Key: SUREFIRE-2192 > URL: https://issues.apache.org/jira/browse/SUREFIRE-2192 > Project: Maven Surefire > Issue Type: Bug > Components: classloading, TestNG support > Affects Versions: 3.1.2 > Environment: Azul JDK 20.0.2 > Microsoft Windows [Version 10.0.19045.3393] > Reporter: Gili > Priority: Major > Attachments: pom.xml, stdout.txt, surefire-20230823182041539_1tmp, > surefire_0-20230823182041539_2tmp, surefireargs-20230823182041539_3 > > > I've got a project with the following dependency tree: > {code} > [INFO] --- dependency:3.6.0:tree (default-cli) @ server --- > [INFO] gg.soulbound.optimus:server:jar:1.0-SNAPSHOT > [INFO] +- gg.soulbound.optimus:common:jar:1.0-SNAPSHOT:compile > [INFO] | \- com.google.guava:guava:jar:32.1.2-jre:compile > [INFO] | +- com.google.guava:failureaccess:jar:1.0.1:compile > [INFO] | +- > com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile > [INFO] | +- > com.google.errorprone:error_prone_annotations:jar:2.18.0:compile > [INFO] | \- com.google.j2objc:j2objc-annotations:jar:2.8:compile > [INFO] +- gg.soulbound.optimus:requirements-generator:jar:1.0-SNAPSHOT:compile > [INFO] | \- com.github.cowwoc.requirements:java:jar:8.0.10:compile > [INFO] | +- com.github.cowwoc.requirements:annotations:jar:8.0.10:compile > [INFO] | +- com.github.cowwoc.requirements:natives:jar:8.0.10:compile > [INFO] | +- io.github.java-diff-utils:java-diff-utils:jar:4.12:compile > [INFO] | \- com.github.cowwoc.pouch:core:jar:4.0:compile > [INFO] +- gg.soulbound.optimus:database:jar:1.0-SNAPSHOT:compile > [INFO] | +- org.postgresql:postgresql:jar:42.6.0:compile > [INFO] | | \- org.checkerframework:checker-qual:jar:3.31.0:runtime > [INFO] | +- p6spy:p6spy:jar:3.9.1:compile > [INFO] | +- org.flywaydb:flyway-core:jar:9.21.2:compile > [INFO] | | \- > com.fasterxml.jackson.dataformat:jackson-dataformat-toml:jar:2.15.2:compile > [INFO] | +- org.jooq:jooq:jar:3.18.5:compile > [INFO] | | \- io.r2dbc:r2dbc-spi:jar:1.0.0.RELEASE:compile > [INFO] | | \- org.reactivestreams:reactive-streams:jar:1.0.3:compile > [INFO] | +- org.jooq:jooq-meta:jar:3.18.5:compile > [INFO] | | \- jakarta.xml.bind:jakarta.xml.bind-api:jar:3.0.0:compile > [INFO] | | \- com.sun.activation:jakarta.activation:jar:2.0.0:compile > [INFO] | +- gg.soulbound.optimus:jooq-plugin:jar:1.0-SNAPSHOT:compile > [INFO] | | \- org.jooq:jooq-codegen:jar:3.18.5:compile > [INFO] | +- com.zaxxer:HikariCP:jar:5.0.1:compile > [INFO] | \- org.threeten:threeten-extra:jar:1.7.2:compile > [INFO] +- com.google.code.gson:gson:jar:2.10.1:compile > [INFO] +- gg.soulbound.optimus:domain:jar:1.0-SNAPSHOT:compile > [INFO] | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.15.2:compile > [INFO] +- gg.soulbound.optimus:client:jar:1.0-SNAPSHOT:compile > [INFO] +- org.eclipse.jetty:jetty-client:jar:12.0.0:compile > [INFO] | +- org.eclipse.jetty:jetty-http:jar:12.0.0:compile > [INFO] | | \- org.eclipse.jetty:jetty-util:jar:12.0.0:compile > [INFO] | +- org.eclipse.jetty:jetty-io:jar:12.0.0:compile > [INFO] | \- org.eclipse.jetty:jetty-alpn-client:jar:12.0.0:compile > [INFO] +- org.eclipse.jetty.http3:jetty-http3-server:jar:12.0.0:compile > [INFO] | +- org.eclipse.jetty:jetty-server:jar:12.0.0:compile > [INFO] | +- org.eclipse.jetty.http3:jetty-http3-common:jar:12.0.0:compile > [INFO] | | +- org.eclipse.jetty.http3:jetty-http3-qpack:jar:12.0.0:compile > [INFO] | | \- org.eclipse.jetty.quic:jetty-quic-common:jar:12.0.0:compile > [INFO] | | \- > org.eclipse.jetty.quic:jetty-quic-quiche-common:jar:12.0.0:compile > [INFO] | | \- > org.mortbay.jetty.quiche:jetty-quiche-native:jar:0.16.0:compile > [INFO] | \- org.eclipse.jetty.quic:jetty-quic-server:jar:12.0.0:compile > [INFO] | \- > org.eclipse.jetty.quic:jetty-quic-quiche-jna:jar:12.0.0:compile > [INFO] | \- net.java.dev.jna:jna-jpms:jar:5.13.0:compile > [INFO] +- org.slf4j:slf4j-api:jar:2.0.7:compile > [INFO] +- org.slf4j:jul-to-slf4j:jar:2.0.7:compile > [INFO] +- ch.qos.logback:logback-classic:jar:1.4.10:compile > [INFO] | \- ch.qos.logback:logback-core:jar:1.4.10:compile > [INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.15.2:compile > [INFO] | \- com.fasterxml.jackson.core:jackson-core:jar:2.15.2:compile > [INFO] +- > com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.15.2:compile > [INFO] +- > com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.15.2:compile > [INFO] +- > com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.15.2:compile > [INFO] +- io.github.classgraph:classgraph:jar:4.8.162:compile > [INFO] +- com.github.lalyos:jfiglet:jar:0.0.9:compile > [INFO] +- org.testng:testng:jar:7.8.0:test > [INFO] | +- com.beust:jcommander:jar:1.82:test > [INFO] | \- org.webjars:jquery:jar:3.6.1:test > [INFO] +- io.sentry:sentry:jar:6.28.0:compile > [INFO] +- io.sentry:sentry-logback:jar:6.28.0:compile > [INFO] \- io.sentry:sentry-jdbc:jar:6.28.0:compile > [INFO] > ------------------------------------------------------------------------ > {code} > As you can see, my project depends on flyway which depends on gson. > When I invoke > {code} > System.out.println(ModuleLayer.boot().modules().stream().map(Module::getName).toList());` > {code} > from `main()` I get: > {code} > [jfiglet, org.threeten.extra, org.eclipse.jetty.alpn.client, > com.fasterxml.jackson.datatype.jsr310, com.github.cowwoc.requirements.java, > com.google.gson, jdk.javadoc, java.prefs, com.fasterxml.jackson.annotation, > ch.qos.logback.core, org.eclipse.jetty.server, org.jooq, > io.github.javadiffutils, jul.to.slf4j, org.postgresql.jdbc, > jdk.crypto.mscapi, p6spy, gg.soulbound.optimus.client, > com.github.cowwoc.requirements.annotation, jdk.charsets, jdk.accessibility, > jdk.unsupported, org.eclipse.jetty.client, org.eclipse.jetty.http3.qpack, > jdk.jpackage, jdk.naming.dns, com.fasterxml.jackson.core, > gg.soulbound.optimus.common, com.fasterxml.jackson.databind, java.compiler, > gg.soulbound.optimus.requirements, jdk.compiler, jdk.naming.rmi, > java.security.jgss, com.fasterxml.jackson.module.paramnames, jdk.internal.le, > org.eclipse.jetty.io, com.github.cowwoc.requirements.natives, > com.fasterxml.jackson.dataformat.toml, jdk.jdeps, jdk.security.jgss, > gg.soulbound.optimus.database, jdk.crypto.cryptoki, > com.fasterxml.jackson.datatype.jdk8, java.security.sasl, sentry.logback, > org.reactivestreams, java.xml, java.sql, jdk.crypto.ec, java.naming, > java.base, org.flywaydb.core, jdk.unsupported.desktop, > org.eclipse.jetty.util, jdk.zipfs, jdk.random, r2dbc.spi, jdk.jfr, > java.datatransfer, ch.qos.logback.classic, java.management, jdk.jlink, > gg.soulbound.optimus.domain, com.zaxxer.hikari, java.xml.crypto, > com.github.cowwoc.pouch.core, java.rmi, java.smartcardio, > io.github.classgraph, org.slf4j, jdk.security.auth, jdk.internal.opt, > java.desktop, jdk.localedata, gg.soulbound.optimus.server, > java.management.rmi, jdk.management, com.google.common, java.transaction.xa, > org.eclipse.jetty.http, jdk.jartool, sentry, java.logging, > jdk.management.jfr, sentry.jdbc] > {code} > but when I run the same line from inside a unit test I get: > {code} > [org.testng, j2objc.annotations, jdk.management.agent, > com.fasterxml.jackson.core, java.instrument, > org.checkerframework.checker.qual, jdk.jshell, jdk.random, java.rmi, > jdk.javadoc, java.sql.rowset, java.prefs, jdk.net, jdk.crypto.mscapi, > java.management.rmi, jdk.jpackage, java.xml.crypto, > com.fasterxml.jackson.datatype.jsr310, org.threeten.extra, sentry.logback, > ch.qos.logback.core, jdk.unsupported, com.github.cowwoc.requirements.natives, > jdk.compiler, org.eclipse.jetty.server, jdk.management, java.net.http, > java.desktop, jdk.localedata, jdk.internal.opt, jul.to.slf4j, jdk.charsets, > io.github.classgraph, p6spy, gg.soulbound.optimus.server, r2dbc.spi, > java.base, org.eclipse.jetty.client, java.security.sasl, java.management, > com.fasterxml.jackson.module.paramnames, jcommander, > org.eclipse.jetty.alpn.client, jdk.jlink, jdk.xml.dom, jdk.accessibility, > jdk.jdeps, java.datatransfer, jdk.crypto.cryptoki, com.google.common, > jdk.naming.dns, jdk.jstatd, org.eclipse.jetty.util, org.eclipse.jetty.http, > java.logging, sentry, jdk.jdwp.agent, gg.soulbound.optimus.requirements, > com.fasterxml.jackson.annotation, org.jooq, > com.google.errorprone.annotations, jdk.sctp, jdk.jdi, java.naming, > gg.soulbound.optimus.database, jdk.security.auth, > com.fasterxml.jackson.datatype.jdk8, jdk.editpad, org.postgresql.jdbc, > jdk.zipfs, jdk.jfr, org.flywaydb.core, java.xml, java.sql, > org.eclipse.jetty.io, jfiglet, com.github.cowwoc.pouch.core, jdk.internal.le, > org.slf4j, java.smartcardio, com.github.cowwoc.requirements.annotation, > org.eclipse.jetty.http3.qpack, ch.qos.logback.classic, jdk.internal.jvmstat, > jdk.jconsole, jdk.management.jfr, failureaccess, java.compiler, > com.fasterxml.jackson.databind, listenablefuture, > com.github.cowwoc.requirements.java, com.zaxxer.hikari, > io.github.javadiffutils, java.transaction.xa, gg.soulbound.optimus.domain, > jdk.nio.mapmode, jdk.crypto.ec, jdk.httpserver, java.scripting, jdk.jartool, > gg.soulbound.optimus.common, java.security.jgss, jdk.security.jgss, > jdk.dynalink, jdk.jsobject, jdk.naming.rmi, jquery, jdk.attach, sentry.jdbc, > org.reactivestreams, jdk.internal.ed, jdk.unsupported.desktop, > gg.soulbound.optimus.server.test, gg.soulbound.optimus.client] > {code} > The thing to notice is that gson shows up when I run main() but is missing > when I run unit tests. > I will attach a copy of my pom.xml file and stdout when running unit tests. > As far as I can see, Surefire is including the file in --module-path but it > cannot be found at runtime. > I tried toggling <useSystemClassloader> but it made no difference. -- This message was sent by Atlassian Jira (v8.20.10#820010)