getResource with absolute resource name is not working in native image
See original GitHub issueDescribe the bug Absolute resource names are not found in native images (with beginning ‘/’)
Expected behavior Absolute resource names should be found
To Reproduce Steps to reproduce the behavior:
Create any Jax-rs resource and add a property file.
@Path("jobs")
@ApplicationScoped
public class JobResource {
@GET
@Path("/simple-job")
@Produces(MediaType.APPLICATION_JSON)
public SimpleResponse simpleJob(@DefaultValue("World") @QueryParam("name") String name) throws IOException {
final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
String propteryFile = "/org/jobrunr/examples/webapp/api/test.properties";
final URL resource1 = contextClassLoader.getResource(propteryFile);
System.out.println("Property file exists: " + (resource1 != null));
String propteryFile2 = "org/jobrunr/examples/webapp/api/test.properties";
final URL resource2 = contextClassLoader.getResource(propteryFile2);
System.out.println("Property file exists: " + (resource2 != null));
return new SimpleResponse("Job Enqueued");
}
}
In JVM mode the output is as follows: Property file exists: true Property file exists: true
In native mode the output is as follows: Property file exists: false Property file exists: true
Unless I don’t understand the spec correctly, I think resources with beginning ‘/’ should be handled as absolute resources: https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getResource-java.lang.String-
Configuration Pom.xml quarkus build config:
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>native-image</goal>
</goals>
<configuration>
<enableHttpUrlHandler>true</enableHttpUrlHandler>
<additionalBuildArgs>--allow-incomplete-classpath,-H:IncludeResources=*/*.properties$,-H:Log=registerResource:verbose</additionalBuildArgs>
</configuration>
</execution>
</executions>
</plugin>
Environment (please complete the following information):
- Output of
uname -a
orver
: Linux rdehuyss-laptop 5.3.0-45-generic #37-Ubuntu SMP Thu Mar 26 20:41:27 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux - Output of
java -version
: openjdk version “11.0.7” 2020-04-14 OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-2ubuntu219.10) OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-2ubuntu219.10, mixed mode, sharing) - GraalVM version (if different from Java): graalvm-ce-java8-20.0.0
- Quarkus version or git rev: 15.1
- Build tool (ie. output of
mvnw --version
orgradlew --version
): Apache Maven 3.6.1 Maven home: /usr/share/maven Java version: 11.0.7, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64 Default locale: en_US, platform encoding: UTF-8 OS name: “linux”, version: “5.3.0-45-generic”, arch: “amd64”, family: “unix”
Additional context (Add any other context about the problem here.)
Issue Analytics
- State:
- Created 3 years ago
- Comments:10 (10 by maintainers)
Yeah, we should address that
Yes - my mistake - doing further testing to find root cause.