scala - libGDX on SBT: roboVM backend is referencing the wrong ASM version -
when trying compile game robovm, maintain getting error:
java.lang.incompatibleclasschangeerror: class org.robovm.compiler.plugin.objc.objcprotocolproxyplugin$1 has interface org.objectweb.asm.classvisitor super class
i have investigated many hours, coming conclusion has asm library: in library asm, version 3.3.2, class classvisitor interface. got promoted abstract class in 4.0 , robovm backend bytecode uses >= 4.0 version while sbt builder tries utilize version < 4.0.
the robovm code in question can found here: https://github.com/robovm/robovm/blob/master/compiler/src/main/java/org/robovm/compiler/plugin/objc/objcprotocolproxyplugin.java#l145
now, while realize issue, have no thought how prepare / work around it. not want compile libgdx source...
to setup app used existing templates, namely one: https://github.com/ajhager/libgdx-sbt-project.g8. also, utilize latest versions respectively:
sbt 0.13.5 libgdx 1.4.1 scala 2.11.3 robovm 1.0.0-alpha-04
now when investigated further, searching culprit in conglomerate, found indeed 2 'asm's included in classpath, 1 version 3.3.1 beingness mentioned earlier:
scalac -classpath ...:~/.ivy2/cache/asm/asm-all/jars/asm-all-3.3.1.jar:...:~/.ivy2/cache/org.ow2.asm/asm-all/jars/asm-all-4.2.jar:...
this caused crash. had find place 3.3.1 set dependency , rather quick in finding it, @ long last: pfn/android-sdk-plugin. whatever reason, set dependency (albeit somehow not using in code). there evidently no conflicts since grouping ids differed: asm:asm-all:3.3.1 vs org.ow2.asm-all:4.2.
this dumbest thing have ever walked across , i'm grinding teeth took long , much debugging behind it. hmpf!
i fixed cloning android-sdk-plugin repository , adjusting asm version / grouping id 4.2. continued sbt publish-local
, increased version number dependency in project fit cloned snapshot version's.
i hope help stumbles across behaviour.
so long, danyel.
scala libgdx robovm
No comments:
Post a Comment