cursive-ide / cursive

Cursive: The IDE for beautiful Clojure code
590 stars 7 forks source link

Problem with fipp under Java 11 #2247

Closed cursive-ide closed 5 years ago

cursive-ide commented 5 years ago

I'm having a similar but slightly different issue (not with lein-npm). I'm on MacOS. Any help would be greatly appreciated!

Setup

MacOS: macOS Mojave 10.14.6 Cursive version: 1.9.0-eap4-2019.2 Intellij version: 2019.2.3 (Community Edition) Lein version (brew installed): Leiningen 2.9.1 on Java 1.8.0_102 Java HotSpot(TM) 64-Bit Server VM

Error message in Intellij event log:

Error reading /Users/concerto/cs/landschaften/project.clj
Syntax error compiling var at (fipp/ednize.clj:71:13).
Unable to resolve var: clojure.instant/thread-local-utc-date-format in this context

fipp is not a direct dependency but per lein deps :tree is a dependency.

project.clj ```clojure (defproject soleil "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0" :url "https://www.eclipse.org/legal/epl-2.0/"} :dependencies [[org.clojure/clojure "1.10.0"]] :main ^:skip-aot soleil.core :target-path "target/%s" :profiles {:uberjar {:aot :all}}) ```
lein deps :tree ```[clojure-complete "0.2.5" :exclusions [[org.clojure/clojure]]] [nrepl "0.6.0" :exclusions [[org.clojure/clojure]]] [org.clojure/clojure "1.10.0"] [org.clojure/core.specs.alpha "0.2.44"] [org.clojure/spec.alpha "0.2.176"] [venantius/ultra "0.6.0"] [grimradical/clj-semver "0.3.0" :exclusions [[org.clojure/clojure]]] [io.aviso/pretty "0.1.35"] [mvxcvi/puget "1.1.0"] [fipp "0.6.14"] [org.clojure/core.rrb-vector "0.0.13"] [mvxcvi/arrangement "1.1.1"] [mvxcvi/whidbey "2.1.0"] [org.clojure/data.codec "0.1.1"] [org.clojars.brenton/google-diff-match-patch "0.1"] [robert/hooke "1.3.0"] [venantius/glow "0.1.5" :exclusions [[hiccup] [garden]]] [clj-antlr "0.2.3"] [org.antlr/antlr4-runtime "4.5.3"] [org.antlr/antlr4 "4.5.3"] [instaparse "1.4.1"] ```

The specific error has been discussed several places, e.g. here Cannot load fipp in Java 9 using bootclasspath · Issue #60 · brandonbloom/fipp · GitHub, but not in connection to Intellij or Cursive.

I’m able to lein run and lein repl (outside of Intellij) successfully. So I suspect the issue is Intellij and/or Cursive.

(Cursive also now can’t resolve basic Clojure like defn , or etc.)

I noticed this issue after upgrading to Intellij 2019. I did not change any dependencies or settings in my project.clj between then and the error.

Steps to reproduce:

Create a new Lein project: $ lein new app testapp

Then import to Intellij following Cursive docs instructions (Cursive: Working with Leiningen) e.g. File -> New -> Project From Existing Sources … etc.

Wait until Intellij event log throws the error.

Originally posted by @pianostringquartet in https://github.com/cursive-ide/cursive/issues/2239#issuecomment-540145075

cursive-ide commented 5 years ago

@pianostringquartet When you create a new project as you describe, how is fipp pulled in? I just created one here and I don't have it. Do you have Ultra or something similar in your profiles.clj that gets added to new projects? Could you do lein deps :tree in a new project and post the results here?

pianostringquartet commented 5 years ago

@cursive-ide Thank you for your feedback and help!

You're right -- I have [venantius/ultra "0.6.0"] in my .lein/profiles.clj. (The output of lein deps :tree of a new project using my .lein/profiles.clj is in the original comment's collapsible section, "lein deps :tree")

Removing ultra from my .lein/profiles.clj and creating a new project gives me:

 [clojure-complete "0.2.5" :exclusions [[org.clojure/clojure]]]
 [nrepl "0.6.0" :exclusions [[org.clojure/clojure]]]
 [org.clojure/clojure "1.10.0"]
   [org.clojure/core.specs.alpha "0.2.44"]
   [org.clojure/spec.alpha "0.2.176"]

For the original problematic case, one recommended workaround is to use LEIN_USE_BOOTCLASSPATH=no lein repl (https://github.com/venantius/ultra/issues/108#issuecomment-522347422)

However, the error only occurs in Intellij Cursive; I'm able to successfully lein run and lein repl outside of Intellij. Is it possible to provide something like EXPORT LEIN_USE_BOOTCLASSPATH=no for whatever internal repls Cursive is running? Can those repls be modified in any way? Or could the issue be something else, e.g. an outdated Java SDK in Intellij?

Thanks again for your help.

cursive-ide commented 5 years ago

Oh, sorry, I totally missed that in your original issue - TIL that Github allows collapsible sections.

I'll try to see if I can reproduce this later on, but I'm hopeful that this may be resolved in eap5 anyway due to the fix for #2208. If you get a chance to test eap5 I'd be interested to know.

pianostringquartet commented 5 years ago

Upgrading to eap5 fixed the issue -- thank you, and thank you for all your hard work on Cursive, it's a great help :)

cursive-ide commented 5 years ago

Great, thanks for letting me know!