当前位置: 首页 > 知识库问答 >
问题:

从命令行将clojure源代码编译为类(AOT)(不使用lein)

慕弘深
2023-03-14

我正在尝试将clojure源代码编译成类文件,并且只使用命令行运行它,不使用lein,也不(可能)使用REPLY。

我在src/hello目录中有core.clj。

.
└── src
    └── hello
        └── core.clj

这是源代码。

(ns hello.core)
(defn -main
  "This should be pretty simple."
  []
  (println "Hello, World!"))

根据这个站点(http://clojure.org/compilitation)中的提示,我尝试从repl获取类文件。

我在src目录中用lein REPL启动REPL,然后尝试编译得到一个错误。

user=> (compile 'hello.core)

CompilerException java.io.IOException: No such file or directory, compiling:(hello/core.clj:1:1)  

通过这个简单的工具将Clojure.clj编译成.class/.jar以及如何在Clojure中编译文件,我似乎可以在repl之外编译Clojure源代码。

> java -cp .:<PATH>/clojure-1.6.0.jar -Dclojure.compile.path=build clojure.lang.Compile src/hello/core.clj 
Compiling src/hello/core.clj to build
Exception in thread "main" java.io.FileNotFoundException: Could not locate 
hello/core/clj__init.class or hello/core/clj.clj on classpath: 
at clojure.lang.RT.load(RT.java:443)
at clojure.lang.RT.load(RT.java:411) 
...
    null

共有1个答案

郭远
2023-03-14

调用REPL时,应该添加类路径。

java -cp .:<PATH>/clojure-1.6.0.jar:./src clojure.main

您需要使用(set!*compile-path*“build”)设置*compile-path*

然后您可以编译以获得类文件。

user=> (compile 'hello.core)
hello.core
    null
clojure> java -cp .:<PATH>/clojure-1.6.0.jar:./src -Dclojure.compile.path=build clojure.lang.Compile hello.core
Compiling hello.core to build
clojure> java -cp .:<PATH>/clojure-1.6.0.jar:./build hello.core
Hello, World!
    null
 类似资料:
  • 问题内容: 我想知道如何从Windows Shell中使用JavaFX编译代码。 我在以下代码fxservidor.java: 问题答案: Oracle Java 8 如果您使用的是Oracle Java 8或更高版本(如cayhorstmann在其回答中所指出),则JavaFX类现在位于Oracle Java实现的默认运行时类路径上。您可以直接运行javac,并java在你的程序和JavaFX类

  • 问题内容: 如何将Android DEX(VM字节码)文件反编译为相应的Java源代码? 问题答案: It’s easy 获取以下工具: 1)dex2jar将dex文件转换为jar文件 2)jd-gui查看jar中的java文件 由于dex2jar进行了一些优化,因此源代码具有很高的可读性。 Procedure:: 这是有关如何反编译的过程: 步骤1: 将中的转换为 注1:在Windows计算机上

  • 主要内容:SDKMAN!,创建和运行第一个程序,hello.kt,运行 REPL(交互式解释器),使用命令行执行脚本Kotlin 命令行编译工具下载地址:https://github.com/JetBrains/kotlin/releases/tag/v1.1.2-2,目前最新为 1.1.2-2。 你可以选择一个最新的稳定版下载。 下载完成后,解压到指定目录,然后将 bin 目录添加到系统环境变量。bin 目录包含编译和运行 Kotlin 所需的脚本。 SDKMAN! 在 OS X、Linux、

  • Kotlin 命令行编译工具下载地址:https://github.com/JetBrains/kotlin/releases/tag/v1.1.2-2,目前最新为 1.1.2-2。 你可以选择一个最新的稳定版下载。 下载完成后,解压到指定目录,然后将 bin 目录添加到系统环境变量。bin 目录包含编译和运行 Kotlin 所需的脚本。 SDKMAN! 在 OS X、Linux、Cygwin、F

  • 有时,我们需要从源代码重新编译一个Kali包.幸运的是用APT下载源代码包,进行必要的修改后再用Debian工具重新编译是如此的简单.此例中,为了添加额外的Mifare Key硬编码到mifare格式化工具,我们将重新编译libfreefare这个包. 下载包的源代码 # Get the source package apt-get source libfreefare cd libfreefar

  • 问题内容: 现在显然,解析器本身并没有什么用(除了静态分析)。我想将转换应用于AST,然后将其编译回源代码。应用转换不是什么大问题,普通的Visitor模式应该可以。 我目前的问题是如何将AST编译回源代码。我基本上看到两种可能性: 使用一些预定义的方案编译代码 保留原始代码的格式,并仅在已更改的节点上应用1.。 现在,我想专注于1.,因为2.似乎很难完成(但是,如果您有关于此的提示,我想听听他们