Skip to content

Resource handling should check if classpath element is a jar #3467

@galderz

Description

@galderz

Non zip/jar dependencies still causing issues even after #3071, but in a different place:

[jbang] native-image: /opt/graalvm-ce-java11-21.1.0/bin/native-image -H:+ReportExceptionStackTraces --enable-https --class-path=/home/g/.m2/repository/org/graalvm/nativeimage/svm/21.1.0/svm-21.1.0.jar:/home/g/.m2/repository/org/graalvm/nativeimage/svm-hosted-native-linux-amd64/21.1.0/svm-hosted-native-linux-amd64-21.1.0.tar.gz:/home/g/.m2/repository/org/graalvm/nativeimage/svm-hosted-native-darwin-amd64/21.1.0/svm-hosted-native-darwin-amd64-21.1.0.tar.gz:/home/g/.m2/repository/org/graalvm/nativeimage/svm-hosted-native-windows-amd64/21.1.0/svm-hosted-native-windows-amd64-21.1.0.tar.gz:/home/g/.m2/repository/org/graalvm/sdk/graal-sdk/21.1.0/graal-sdk-21.1.0.jar:/home/g/.m2/repository/org/graalvm/nativeimage/objectfile/21.1.0/objectfile-21.1.0.jar:/home/g/.m2/repository/org/graalvm/nativeimage/pointsto/21.1.0/pointsto-21.1.0.jar:/home/g/.m2/repository/org/graalvm/compiler/compiler/21.1.0/compiler-21.1.0.jar:/home/g/.m2/repository/org/graalvm/truffle/truffle-api/21.1.0/truffle-api-21.1.0.jar -jar /home/g/.jbang/cache/jars/example.java.b7acb0fb141a742e1c2330740349f80d781b326cd18722d42830d9a0d0617df8.jar /home/g/.jbang/cache/jars/example.java.b7acb0fb141a742e1c2330740349f80d781b326cd18722d42830d9a0d0617df8.jar.bin
[jbang] log: /tmp/jbang9920023040190163357native-image
Error: Unable to handle classpath element '/home/g/.m2/repository/org/graalvm/nativeimage/svm-hosted-native-linux-amd64/21.1.0/svm-hosted-native-linux-amd64-21.1.0.tar.gz'. Make sure that all classpath entries are either directories or valid jar files.
com.oracle.svm.core.util.UserError$UserException: Unable to handle classpath element '/home/g/.m2/repository/org/graalvm/nativeimage/svm-hosted-native-linux-amd64/21.1.0/svm-hosted-native-linux-amd64-21.1.0.tar.gz'. Make sure that all classpath entries are either directories or valid jar files.
	at com.oracle.svm.core.util.UserError.abort(UserError.java:68)
	at com.oracle.svm.hosted.ResourcesFeature.duringAnalysis(ResourcesFeature.java:175)
	at com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$14(NativeImageGenerator.java:765)
	at com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:71)
	at com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:765)
	at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:582)
	at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$2(NativeImageGenerator.java:495)
	at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

The fix would be simple (add a check to see if the element is a jar before calling scanJar). However, testing this is a little more tricky since I'm unsure how to generate an svm pom.xml that has tar.gz dependencies (see slack question).

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions