cursive icon indicating copy to clipboard operation
cursive copied to clipboard

REPL not starting for Leiningen project including Java code

Open JDurstberger opened this issue 3 years ago • 3 comments

Description

I am unable to start the REPL for a leiningen project which includes Java code. The error message is "Error Running ‘REPL’: Error executing Leiningen configuration"

Versions

OS: macOS Monterey 12.0.1 IntelliJ: IntelliJ IDEA 2021.3.1 (Ultimate Edition) Cursive: 1.12.1-2021.3 (also with 1.12.2-eap1-2021.3)

Steps to Reproduce

A simple project with one Clojure and one Java file is enough to reproduce this issue.

.
├── lein-issue.iml
├── project.clj
└── src
    ├── clojure
    │   └── leinissue
    │       └── core.clj
    └── java
        └── leinissue
            └── SomeClass.java

project.clj

(defproject lein-issue "0.0.0"

  :dependencies [[org.clojure/clojure "1.10.3"]]

  :java-source-paths ["src/java"]
  :source-paths ["src/clojure"])

core.clj

(ns leinissue.core)

(println "Hello, world!")

SomeClass.java

package leinissue;

public class SomeClass {
}
  1. Create files as described above
  2. Open project with IntelliJ
  3. Create new Local REPL configuration (all values as default values)
  4. Try running the REPL

JDurstberger avatar Jan 11 '22 10:01 JDurstberger

Unfortunately the issue is still reproducible. I will add more details:

  • idea.log contains following lines before exception trace
2023-01-23 12:09:42,356 [ 335793]   INFO - STDERR - Java compiler not found; Be sure to use java from a JDK
2023-01-23 12:09:42,356 [ 335793]   INFO - STDERR - rather than a JRE by modifying PATH or setting JAVA_CMD.
  • Looks like this is where this exception is thrown be Leiningen
  • In the same project, but without :java-source-paths, JavacTool is successfully loaded from $JAVA_HOME/lib/tools.jar (it doesn't seem to have anything to do with PATH or JAVA_CMD as mentioned before)
(javax.tools.ToolProvider/getSystemJavaCompiler)
=> #object[com.sun.tools.javac.api.JavacTool 0x1285ea8d "com.sun.tools.javac.api.JavacTool@1285ea8d"]
  • Full stacktrace from idea.log:
2023-01-23 12:09:42,356 [ 335793]   INFO - STDERR - Java compiler not found; Be sure to use java from a JDK
2023-01-23 12:09:42,356 [ 335793]   INFO - STDERR - rather than a JRE by modifying PATH or setting JAVA_CMD.
2023-01-23 12:09:42,392 [ 335829]   WARN - #cursive.shim.IndicatorBridge - Exit called in Leiningen:
java.lang.RuntimeException: null
 at cursive.leiningen.project$add_standard_hooks_BANG_$fn__2322$fn__2323.invoke (project.clj:514)
    cursive.leiningen.project$add_standard_hooks_BANG_$fn__2322.doInvoke (project.clj:514)
    clojure.lang.RestFn.applyTo (RestFn.java:139)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    cursive.leiningen.hooke$compose_hooks$fn__576.doInvoke (hooke.clj:43)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$apply.invoke (core.clj:662)
    cursive.leiningen.hooke$run_hooks.invokeStatic (hooke.clj:49)
    cursive.leiningen.hooke$run_hooks.invoke (hooke.clj:48)
    cursive.leiningen.hooke$prepare_for_hooks$fn__581$fn__582.doInvoke (hooke.clj:57)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    leiningen.javac$run_javac_subprocess.invokeStatic (javac.clj:133)
    leiningen.javac$run_javac_subprocess.invoke (javac.clj:115)
    leiningen.javac$javac.invokeStatic (javac.clj:147)
    leiningen.javac$javac.doInvoke (javac.clj:136)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$partial_task$fn__7380.doInvoke (main.clj:284)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$apply_task.invokeStatic (main.clj:334)
    leiningen.core.main$apply_task.invoke (main.clj:320)
    leiningen.core.eval$run_prep_tasks.invokeStatic (eval.clj:51)
    leiningen.core.eval$run_prep_tasks.invoke (eval.clj:43)
    leiningen.core.eval$prep.invokeStatic (eval.clj:86)
    leiningen.core.eval$prep.invoke (eval.clj:73)
    cursive.leiningen.task$prep_hook$fn__2422.invoke (task.clj:40)
    clojure.lang.AFn.applyToHelper (AFn.java:156)
    clojure.lang.AFn.applyTo (AFn.java:144)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    cursive.leiningen.hooke$compose_hooks$fn__576.doInvoke (hooke.clj:43)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$apply.invoke (core.clj:662)
    cursive.leiningen.hooke$run_hooks.invokeStatic (hooke.clj:49)
    cursive.leiningen.hooke$run_hooks.invoke (hooke.clj:48)
    cursive.leiningen.hooke$prepare_for_hooks$fn__581$fn__582.doInvoke (hooke.clj:57)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    leiningen.core.eval$eval_in_project.invokeStatic (eval.clj:367)
    leiningen.core.eval$eval_in_project.invoke (eval.clj:361)
    clojure.lang.AFn.applyToHelper (AFn.java:160)
    clojure.lang.AFn.applyTo (AFn.java:144)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    cursive.leiningen.task$eval_hook$fn__2419.doInvoke (task.clj:29)
    clojure.lang.RestFn.applyTo (RestFn.java:142)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    cursive.leiningen.hooke$compose_hooks$fn__576.doInvoke (hooke.clj:43)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$apply.invoke (core.clj:662)
    cursive.leiningen.hooke$run_hooks.invokeStatic (hooke.clj:49)
    cursive.leiningen.hooke$run_hooks.invoke (hooke.clj:48)
    cursive.leiningen.hooke$prepare_for_hooks$fn__581$fn__582.doInvoke (hooke.clj:57)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.repl$repl$run__11566.invoke (repl.clj:449)
    leiningen.repl$repl.invokeStatic (repl.clj:457)
    leiningen.repl$repl.doInvoke (repl.clj:369)
    clojure.lang.RestFn.invoke (RestFn.java:425)
    clojure.lang.AFn.applyToHelper (AFn.java:156)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$partial_task$fn__7380.doInvoke (main.clj:284)
    clojure.lang.RestFn.applyTo (RestFn.java:139)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$apply_task.invokeStatic (main.clj:334)
    leiningen.core.main$apply_task.invoke (main.clj:320)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:343)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:336)
    cursive.leiningen.task$task_details$fn__2445.invoke (task.clj:78)
    cursive.leiningen.task$task_details.invokeStatic (task.clj:73)
    cursive.leiningen.task$task_details.invoke (task.clj:42)
    clojure.lang.Var.invoke (Var.java:388)
    org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke (ClojureRuntimeShimImpl.java:119)
    org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke (ClojureRuntimeShimImpl.java:112)
    cursive.shim.ShimBootstrap$Shim.apply (ShimBootstrap.java:53)
    cursive.repl.runner.LocalConfiguration$createLeinParameters$ret$1.invoke (ReplRunConfigurations.kt:458)
    cursive.repl.runner.LocalConfiguration$createLeinParameters$ret$1.invoke (ReplRunConfigurations.kt:457)
    cursive.shim.ShimProvider.withShim (Shim.kt:117)
    cursive.repl.runner.LocalConfiguration.createLeinParameters (ReplRunConfigurations.kt:457)
    cursive.repl.runner.LocalConfiguration.access$createLeinParameters (ReplRunConfigurations.kt:388)
    cursive.repl.runner.LocalConfiguration$getRunProfileState$1.createDeferredParameters (ReplRunConfigurations.kt:427)
    cursive.runner.DeferredCommandLineState.cacheDeferredParameters (Deferred.kt:72)
    cursive.runner.AbstractDeferredRunner$execute$1.run (Deferred.kt:104)
    com.intellij.openapi.progress.impl.CoreProgressManager.startTask (CoreProgressManager.java:423)
    com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask (ProgressManagerImpl.java:114)
    com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$6 (CoreProgressManager.java:474)
    com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3 (ProgressRunner.java:252)
    com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2 (CoreProgressManager.java:188)
    com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13 (CoreProgressManager.java:589)
    com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun (CoreProgressManager.java:664)
    com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress (CoreProgressManager.java:620)
    com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress (CoreProgressManager.java:588)
    com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress (ProgressManagerImpl.java:60)
    com.intellij.openapi.progress.impl.CoreProgressManager.runProcess (CoreProgressManager.java:175)
    com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4 (ProgressRunner.java:252)
    java.util.concurrent.CompletableFuture$AsyncSupply.run (CompletableFuture.java:1768)
    java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1136)
    java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:635)
    java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run (Executors.java:702)
    java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run (Executors.java:699)
    java.security.AccessController.doPrivileged (AccessController.java:399)
    java.util.concurrent.Executors$PrivilegedThreadFactory$1.run (Executors.java:699)
    java.lang.Thread.run (Thread.java:833)

2023-01-23 12:09:42,395 [ 335832]   INFO - #c.i.e.r.ExecutionUtil - Error running 'REPL':<br>Error executing Leiningen configuration.
com.intellij.execution.ExecutionException: Error executing Leiningen configuration.
	at cursive.repl.runner.LocalConfiguration.createLeinParameters(ReplRunConfigurations.kt:511)
	at cursive.repl.runner.LocalConfiguration.access$createLeinParameters(ReplRunConfigurations.kt:388)
	at cursive.repl.runner.LocalConfiguration$getRunProfileState$1.createDeferredParameters(ReplRunConfigurations.kt:427)
	at cursive.runner.DeferredCommandLineState.cacheDeferredParameters(Deferred.kt:72)
	at cursive.runner.AbstractDeferredRunner$execute$1.run(Deferred.kt:104)
	at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:423)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:114)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$6(CoreProgressManager.java:474)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:252)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:188)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:589)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:664)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:620)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:588)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:175)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:252)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
	at java.base/java.lang.Thread.run(Thread.java:833)

Please any workaround is very welcome. 🙏

fixedorgo avatar Jan 23 '23 11:01 fixedorgo

My apologies for the very long time this has been outstanding. I've just tried to reproduce this, and I can't - the repro project works fine for me. Is this still a problem affecting anyone?

cursive-ghost avatar Feb 02 '24 03:02 cursive-ghost

I am no longer working on this project, so I am no longer affected by it. Not sure what the status for others is.

JDurstberger avatar Feb 08 '24 09:02 JDurstberger