clj-commons / virgil

Recompile Java code without restarting the REPL
312 stars 21 forks source link

Unsupported class file major version 59 #35

Closed cloojure closed 6 months ago

cloojure commented 3 years ago

Hi - I get the following error using both java 15 and java 8:

recompiling all files in ["/home/alan/expr/demo/src/java"]
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by virgil.compile$get_java_compiler to constructor com.sun.tools.javac.api.JavacTool()
WARNING: Please consider reporting this to the maintainers of virgil.compile$get_java_compiler
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

recompiling all files in ["/home/alan/expr/demo/src/java"]
Unsupported class file major version 59
Syntax error (IllegalArgumentException) compiling at (/tmp/form-init16056319481210472696.clj:1:74).
Unsupported class file major version 59

Full report at:
/tmp/clojure-5914386959178799319.edn
Tests failed.
( lein do clean, test; )  14.22s user 0.61s system 254% cpu 5.831 total

~/expr/demo > cat /tmp/clojure-5914386959178799319.edn
{:clojure.main/message
 "Syntax error (IllegalArgumentException) compiling at (/tmp/form-init16056319481210472696.clj:1:74).\nUnsupported class file major version 59\n",
 :clojure.main/triage
 {:clojure.error/phase :compile-syntax-check,
  :clojure.error/line 1,
  :clojure.error/column 74,
  :clojure.error/source "form-init16056319481210472696.clj",
  :clojure.error/path "/tmp/form-init16056319481210472696.clj",
  :clojure.error/class java.lang.IllegalArgumentException,
  :clojure.error/cause "Unsupported class file major version 59"},
 :clojure.main/trace
 {:via
  [{:type clojure.lang.Compiler$CompilerException,
    :message
    "Syntax error compiling at (/tmp/form-init16056319481210472696.clj:1:74).",
    :data
    {:clojure.error/phase :compile-syntax-check,
     :clojure.error/line 1,
     :clojure.error/column 74,
     :clojure.error/source "/tmp/form-init16056319481210472696.clj"},
    :at [clojure.lang.Compiler load "Compiler.java" 7652]}
   {:type java.lang.IllegalArgumentException,
    :message "Unsupported class file major version 59",
    :at
    [org.objectweb.asm.ClassReader <init> "ClassReader.java" 184]}],
  :trace
  [[org.objectweb.asm.ClassReader <init> "ClassReader.java" 184]
   [org.objectweb.asm.ClassReader <init> "ClassReader.java" 166]
   [org.objectweb.asm.ClassReader <init> "ClassReader.java" 152]
   [virgil.decompile$parents invokeStatic "decompile.clj" 12]
   [virgil.decompile$parents invoke "decompile.clj" 12]
   [virgil.decompile$rank_order$parents__825 invoke "decompile.clj" 24]
   [clojure.core$map$fn__5884 invoke "core.clj" 2759]
   [clojure.lang.LazySeq sval "LazySeq.java" 42]
   [clojure.lang.LazySeq seq "LazySeq.java" 51]
   [clojure.lang.RT seq "RT.java" 535]
   [clojure.core$seq__5419 invokeStatic "core.clj" 139]
   [clojure.core$zipmap invokeStatic "core.clj" 6570]
   [clojure.core$zipmap invoke "core.clj" 6570]
   [virgil.decompile$rank_order invokeStatic "decompile.clj" 25]
   [virgil.decompile$rank_order invoke "decompile.clj" 18]
   [virgil.compile$compile_java invokeStatic "compile.clj" 124]
   [virgil.compile$compile_java invoke "compile.clj" 119]
   [virgil.compile$compile_all_java invokeStatic "compile.clj" 161]
   [virgil.compile$compile_all_java invoke "compile.clj" 149]
   [virgil$watch$recompile__951 invoke "virgil.clj" 44]
   [virgil$watch invokeStatic "virgil.clj" 61]
   [virgil$watch doInvoke "virgil.clj" 41]
   [clojure.lang.RestFn invoke "RestFn.java" 408]
   [user$eval964 invokeStatic "form-init16056319481210472696.clj" 1]
   [user$eval964 invoke "form-init16056319481210472696.clj" 1]
   [clojure.lang.Compiler eval "Compiler.java" 7181]
   [clojure.lang.Compiler eval "Compiler.java" 7170]
   [clojure.lang.Compiler load "Compiler.java" 7640]
   [clojure.lang.Compiler loadFile "Compiler.java" 7578]
   [clojure.main$load_script invokeStatic "main.clj" 475]
   [clojure.main$init_opt invokeStatic "main.clj" 477]
   [clojure.main$init_opt invoke "main.clj" 477]
   [clojure.main$initialize invokeStatic "main.clj" 508]
   [clojure.main$null_opt invokeStatic "main.clj" 542]
   [clojure.main$null_opt invoke "main.clj" 539]
   [clojure.main$main invokeStatic "main.clj" 664]
   [clojure.main$main doInvoke "main.clj" 616]
   [clojure.lang.RestFn applyTo "RestFn.java" 137]
   [clojure.lang.Var applyTo "Var.java" 705]
   [clojure.main main "main.java" 40]],
  :cause "Unsupported class file major version 59",
  :phase :compile-syntax-check}}
p-himik commented 2 years ago

A solution is to make your project depend on a newer version of org.ow2.asm/asm - at the time of writing, it's 9.3.

alexander-yakushev commented 6 months ago

Should be finally fixed in 0.3.0.