question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

IncompatibleClassChangeError with upickle 1.3.14 and 1.3.15

See original GitHub issue

Here is a stacktrack which running mill with upickle 1.3.15.

java.lang.IncompatibleClassChangeError: Implementing class
  java.lang.ClassLoader.defineClass1(Native Method)
  java.lang.ClassLoader.defineClass(ClassLoader.java:756)
  java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
  java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
  java.net.URLClassLoader.access$100(URLClassLoader.java:74)
  java.net.URLClassLoader$1.run(URLClassLoader.java:369)
  java.net.URLClassLoader$1.run(URLClassLoader.java:363)
  java.security.AccessController.doPrivileged(Native Method)
  java.net.URLClassLoader.findClass(URLClassLoader.java:362)
  java.lang.ClassLoader.loadClass(ClassLoader.java:418)
  sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
  java.lang.ClassLoader.loadClass(ClassLoader.java:351)
  ammonite.runtime.Storage$.<clinit>(Storage.scala:110)
  ammonite.runtime.Storage$Folder$$anon$34.apply(Storage.scala:330)
  ammonite.runtime.Storage$Folder$$anon$34.apply(Storage.scala:323)
  ammonite.interp.DependencyLoader.load(DependencyLoader.scala:32)
  ammonite.interp.Interpreter.loadIvy(Interpreter.scala:628)
  ammonite.runtime.ImportHook$BaseIvy.resolve(ImportHook.scala:191)
  mill.main.MillIvyHook$.resolve(MillIvyHook.scala:16)
  ammonite.runtime.ImportHook$BaseIvy.$anonfun$handle$7(ImportHook.scala:200)
  scala.util.Either.flatMap(Either.scala:352)
  ammonite.runtime.ImportHook$BaseIvy.handle(ImportHook.scala:199)
  ammonite.interp.Interpreter.$anonfun$resolveSingleImportHook$4(Interpreter.scala:178)
  ammonite.util.Res$Success.flatMap(Res.scala:62)
  ammonite.interp.Interpreter.resolveSingleImportHook(Interpreter.scala:172)
  ammonite.interp.Interpreter.$anonfun$resolveImportHooks$1(Interpreter.scala:225)
  ammonite.util.Res$.$anonfun$map$1(Res.scala:43)
  ammonite.util.Res$.$anonfun$fold$1(Res.scala:32)
  scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
  scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
  scala.collection.immutable.List.foldLeft(List.scala:79)
  ammonite.util.Res$.fold(Res.scala:30)
  ammonite.util.Res$.map(Res.scala:43)
  ammonite.interp.Interpreter.resolveImportHooks(Interpreter.scala:225)
  ammonite.interp.Interpreter.$anonfun$processAllScriptBlocks$14(Interpreter.scala:583)
  ammonite.util.Res$Success.flatMap(Res.scala:62)
  ammonite.interp.Interpreter.$anonfun$processAllScriptBlocks$12(Interpreter.scala:579)
  scala.Option.getOrElse(Option.scala:201)
  ammonite.interp.Interpreter.loop$1(Interpreter.scala:579)
  ammonite.interp.Interpreter.processAllScriptBlocks(Interpreter.scala:617)
  ammonite.interp.Interpreter.$anonfun$processModule$6(Interpreter.scala:412)
  ammonite.util.Catching.flatMap(Res.scala:115)
  ammonite.interp.Interpreter.$anonfun$processModule$5(Interpreter.scala:403)
  ammonite.util.Res$Success.flatMap(Res.scala:62)
  ammonite.interp.Interpreter.processModule(Interpreter.scala:393)
  ammonite.interp.Interpreter.$anonfun$resolveSingleImportHook$6(Interpreter.scala:184)
  ammonite.util.Res$.$anonfun$map$1(Res.scala:43)
  ammonite.util.Res$.$anonfun$fold$1(Res.scala:32)
  scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
  scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
  scala.collection.immutable.List.foldLeft(List.scala:79)
  ammonite.util.Res$.fold(Res.scala:30)
  ammonite.util.Res$.map(Res.scala:43)
  ammonite.interp.Interpreter.$anonfun$resolveSingleImportHook$5(Interpreter.scala:181)
  ammonite.util.Res$Success.flatMap(Res.scala:62)
  ammonite.interp.Interpreter.$anonfun$resolveSingleImportHook$4(Interpreter.scala:173)
  ammonite.util.Res$Success.flatMap(Res.scala:62)
  ammonite.interp.Interpreter.resolveSingleImportHook(Interpreter.scala:172)
  ammonite.interp.Interpreter.$anonfun$resolveImportHooks$1(Interpreter.scala:225)
  ammonite.util.Res$.$anonfun$map$1(Res.scala:43)
  ammonite.util.Res$.$anonfun$fold$1(Res.scala:32)
  scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
  scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
  scala.collection.immutable.List.foldLeft(List.scala:79)
  ammonite.util.Res$.fold(Res.scala:30)
  ammonite.util.Res$.map(Res.scala:43)
  ammonite.interp.Interpreter.resolveImportHooks(Interpreter.scala:225)
  ammonite.interp.Interpreter.$anonfun$processAllScriptBlocks$14(Interpreter.scala:583)
  ammonite.util.Res$Success.flatMap(Res.scala:62)
  ammonite.interp.Interpreter.$anonfun$processAllScriptBlocks$12(Interpreter.scala:579)
  scala.Option.getOrElse(Option.scala:201)
  ammonite.interp.Interpreter.loop$1(Interpreter.scala:579)
  ammonite.interp.Interpreter.processAllScriptBlocks(Interpreter.scala:617)
  ammonite.interp.Interpreter.$anonfun$processModule$6(Interpreter.scala:412)
  ammonite.util.Catching.flatMap(Res.scala:115)
  ammonite.interp.Interpreter.$anonfun$processModule$5(Interpreter.scala:403)
  ammonite.util.Res$Success.flatMap(Res.scala:62)
  ammonite.interp.Interpreter.processModule(Interpreter.scala:393)
  mill.main.RunScript$.$anonfun$evaluateRootModule$1(RunScript.scala:94)
  ammonite.util.Res$Success.flatMap(Res.scala:62)
  mill.main.RunScript$.evaluateRootModule(RunScript.scala:87)
  mill.main.RunScript$.runScript(RunScript.scala:49)
  mill.main.MainRunner.$anonfun$runScript$1(MainRunner.scala:119)
  mill.main.MainRunner.watchLoop2(MainRunner.scala:68)
  mill.main.MainRunner.runScript(MainRunner.scala:94)
  mill.MillMain$.main0(MillMain.scala:299)
  mill.MillMain$.main(MillMain.scala:104)
  mill.MillMain.main(MillMain.scala)

How to reproduce:

  • checkout mill repo, e.g. from tag 0.9.8
  • change the upickle depenency version in build.sc line 100 to either 1.3.14 or 1.3.15
  • run the following: mill -i dev.assembly && rm -rf ~/.mill && out/dev/assembly/dest/mill -i main.test

This is probably because mill loads plugins via $ivy import which are build with older versions of upickle.

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:6 (6 by maintainers)

github_iconTop GitHub Comments

1reaction
lihaoyicommented, Jun 8, 2021

We haven’t been following strict semver - normally this kind of bin-compat breakage would bump the second number, and only “huge” source-compat breakages would bump the first. I can go push tags for uPickle and Ammonite to get numbered versions out

0reactions
lefoucommented, Jun 8, 2021

@lihaoyi Thank you! I’ll update those in mill too.

Read more comments on GitHub >

github_iconTop Results From Across the Web

com-lihaoyi/upickle - GitHub
uPickle : a simple, fast, dependency-free JSON & Binary (MessagePack) serialization library for Scala - GitHub - com-lihaoyi/upickle: uPickle: a simple, ...
Read more >
µPickle 2.0.0
uPickle (pronounced micro-pickle) is a lightweight JSON and binary (MessagePack) serialization library for Scala. It's key features are:.
Read more >
UPickle - com.lihaoyi - Maven Repository
Version Scala Vulnerabilities Usages Date 2.0.x 2.0.0 0.4 (3) · 0.4 (2.13) · 0.4 (2.12) · 0.4 (2.11) Central 43 Apr 30, 2022 1.6.x 2.0.x...
Read more >
wifi_station_scan() callback argument status is FAIL or CANCEL at ...
IncompatibleClassChangeError with upickle 1.3.14 and 1.3.15, 6, 2021-05-28, 2022-10-14. "user.username" 这样的key怎么解决解析? 1, 2019-08-29, 2022-10-06.
Read more >
IncompatibleClassChangeError with upickle 1.3.14 and 1.3.15 #283 ...
IncompatibleClassChangeError with upickle 1.3.14 and 1.3.15 issue from test/amnaredo github repository.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found