Skip to content

Dependency Problems

Justin Conklin edited this page Aug 22, 2020 · 2 revisions

This library depends on a relatively recent version of ASM to support the newest JVM bytecode features and get the latest bugfixes and performance improvements. Unfortunately, many popular libraries still depend on much older ASM releases. For example, core.async (as of 1.3.610) depends on a version of tools.analyzer.jvm, which depends on ASM 5.2, which is from 2016.

If you depend (either directly or indirectly) on a library like this, this can lead to errors when attempting to load insn due to being unable to resolve newer class symbols or fields. These look like: Syntax error compiling at (insn/util.clj:...), or similar.

You can work around this error by adding an exclusion to the conflicting dependency. Leiningen, for example:

(defproject #_...
  :dependencies [[dep.uses.asm "0.42" :exclusions [org.ow2.asm/asm]]])

Alternatively, if you do not need recent features or other fixes, you can try version 0.2.1 of this library. This version uses Clojure's bundled ASM, by default.

In a future version of insn this may be alleviated by using a tool such as mranderson.