0

尝试使用 AOT 编译 Clojure 命名空间时clj -e "(compile 'my-ns.core)"会引发异常LocalDate

Syntax error (IllegalArgumentException) compiling . at (my-project/my-ns-core.clj:5:1).
No matching method ofInstant found taking 2 args for class java.time.LocalDate

在 REPL 中运行良好。为什么在 AOT 中失败?类是导入的。

(ns my-ns.core
  (:require [clojure.alpha.spec.gen :as g])
  (:import (java.time LocalDate))

(LocalDate/ofInstant (Instant/ofEpochMilli 123) (ZoneId/of "UTC"))

我认为这一定与 AOT 构建中包含的这些类有关?

4

1 回答 1

1

GraalVM 在我的版本中,$PATH它优先调用java不包含 Java 8 日期类的旧 Java 版本。通过运行想通了which java

解决了:

export JAVA_HOME=/Users/<username>/Library/Java/JavaVirtualMachines/openjdk-15/Contents/Home`

并且不包括$GRAALVM_HOME$PATH.

于 2020-10-21T15:12:12.893 回答