Skip to content

Class incompatibility problem using plain scala #384

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
valdo404 opened this issue Apr 28, 2018 · 2 comments
Closed

Class incompatibility problem using plain scala #384

valdo404 opened this issue Apr 28, 2018 · 2 comments
Assignees

Comments

@valdo404
Copy link

valdo404 commented Apr 28, 2018

Hi people,

how are you ? Greetings from france ;)

object Main extends App {
    println("Hello, world!")
}

won't work and fails with this exception at build time:

Build on Server(pid: 30703, port: 26681)
SendBuildRequest [
-task=com.oracle.svm.hosted.NativeImageGeneratorRunner
-imagecp
/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/svm.jar:/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/objectfile.jar:/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/svm-enterprise.jar:/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/pointsto.jar:/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/graal.jar:/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/enterprise-graal.jar:/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/jvmci-api.jar:/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/jvmci-hotspot.jar:/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/boot/graaljs-scriptengine.jar:/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/boot/graal-sdk.jar:/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/library-support-enterprise.jar:/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/library-support.jar:/Users/lvaldes/Projects/jet-test:/Users/lvaldes/Projects/jet-test/target/scala-2.12/jet-test-assembly-0.1.jar
-H:Path=/Users/lvaldes/Projects/jet-test
-H:Class=com.powerspace.graal.Main
-H:Name=jet-test-assembly-0.1
-H:CLibraryPath=/Users/lvaldes/graalvm/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/clibraries/darwin-amd64
]
   classlist:   1,676.86 ms
       (cap):   1,200.18 ms
       setup:   1,387.19 ms
    analysis:   1,483.50 ms
fatal error: java.lang.IncompatibleClassChangeError
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:598)
	at java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1005)
	at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:398)
	at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:240)
	at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:337)
	at com.oracle.svm.hosted.server.NativeImageBuildServer.executeCompilation(NativeImageBuildServer.java:378)
	at com.oracle.svm.hosted.server.NativeImageBuildServer.lambda$processCommand$8(NativeImageBuildServer.java:315)
	at com.oracle.svm.hosted.server.NativeImageBuildServer.withJVMContext(NativeImageBuildServer.java:396)
	at com.oracle.svm.hosted.server.NativeImageBuildServer.processCommand(NativeImageBuildServer.java:312)
	at com.oracle.svm.hosted.server.NativeImageBuildServer.processRequest(NativeImageBuildServer.java:256)
	at com.oracle.svm.hosted.server.NativeImageBuildServer.lambda$serve$7(NativeImageBuildServer.java:216)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IncompatibleClassChangeError: com.powerspace.graal.Main and com.powerspace.graal.Main$delayedInit$body disagree on InnerClasses attribute
	at java.lang.Class.getDeclaringClass0(Native Method)
	at java.lang.Class.getDeclaringClass(Class.java:1235)
	at java.lang.Class.getEnclosingClass(Class.java:1277)
	at jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl.getEnclosingType(HotSpotResolvedObjectTypeImpl.java:894)
	at jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl.getEnclosingType(HotSpotResolvedObjectTypeImpl.java:58)
	at com.oracle.graal.pointsto.meta.AnalysisUniverse.createType(AnalysisUniverse.java:284)
	at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:191)
	at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:168)
	at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:67)
	at com.oracle.graal.pointsto.infrastructure.UniverseMetaAccess.lookupJavaType0(UniverseMetaAccess.java:87)
	at com.oracle.graal.pointsto.infrastructure.UniverseMetaAccess.lookupJavaType(UniverseMetaAccess.java:78)
	at com.oracle.graal.pointsto.meta.AnalysisMetaAccess.lookupJavaType(AnalysisMetaAccess.java:43)
	at com.oracle.graal.pointsto.AnalysisObjectScanner.forScannedConstant(AnalysisObjectScanner.java:133)
	at com.oracle.graal.pointsto.ObjectScanner.scanConstant(ObjectScanner.java:217)
	at com.oracle.graal.pointsto.ObjectScanner.scanField(ObjectScanner.java:125)
	at com.oracle.graal.pointsto.ObjectScanner.doScan(ObjectScanner.java:263)
	at com.oracle.graal.pointsto.ObjectScanner.finish(ObjectScanner.java:307)
	at com.oracle.graal.pointsto.ObjectScanner.scanBootImageHeapRoots(ObjectScanner.java:78)
	at com.oracle.graal.pointsto.ObjectScanner.scanBootImageHeapRoots(ObjectScanner.java:60)
	at com.oracle.graal.pointsto.BigBang.checkObjectGraph(BigBang.java:581)
	at com.oracle.graal.pointsto.BigBang.finish(BigBang.java:552)
	at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:653)
	at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:381)
	at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error: Processing image build request failed

whereas

object Main {
  def main(args: Array[String]): Unit = {
    println("Hello, world!")
  }
}

works.
Any idea ?

Best regards,
laurent

@cstancu cstancu self-assigned this Apr 28, 2018
@cstancu
Copy link
Member

cstancu commented Apr 28, 2018

Hi Laurent, Thank you for your report. This seems to be a scala compiler bug. See here: scala/bug#10487.

@cstancu
Copy link
Member

cstancu commented May 4, 2018

I'll close this issue since it is not a SubstrateVM bug. Until the scala compiler bug is fixed the workaround that you suggested is the only solution. Feel free to open another issue if you run into other problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants