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

2024-04-29

我正在尝试将 clojure 源代码编译成类文件,并仅使用命令行运行它,没有 lein,也没有(可能)回复。

我有 core.cljsrc/hello目录。

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

这是源代码。

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

using (compile)在 REPL 中。

从这个网站的提示(http://clojure.org/compilation http://clojure.org/compilation),我尝试从 REPL 获取类文件。

我开始 REPLlein repl在 src 目录中,然后尝试编译出现错误。

user=> (compile 'hello.core)

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

命令行

从这篇文章用于将 Clojure .clj 编译为 .class / .jar 的简单工具 https://stackoverflow.com/questions/14926707/simple-tool-for-compiling-clojure-clj-into-class-jar and 如何在clojure中编译文件 https://stackoverflow.com/questions/3369898/how-to-compile-file-in-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) 
...

所以,这是我的问题:

  • 如何编译 clojure 源代码以获取带/不带 REPL 的类?
  • 如何用Java运行该类?是否足以执行java -cp .:CLOJURE_JAR main?

REPL

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

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

您需要设置*compile-path* with (set! *compile-path* "build").

然后就可以编译得到class文件了。

user=> (compile 'hello.core)
hello.core

命令行

有两个问题:

  1. 对于编译,CP 应包含源目录。
  2. 参数不是文件路径,而是命名空间。

这是调用编译器。

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!

参考

  • 编译 Clojure? https://stackoverflow.com/questions/3123662/compiling-clojure
  • http://clojure.org/compilation http://clojure.org/compilation
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • Common Lisp 中的原子和 Clojure 中的原子有什么区别?

    下列page http clojure org atoms讨论原子在 Clojure 中的工作原理 它并没有详细说明 Clojure 和其他 lisp 方言中原子之间的差异 Common Lisp 中的原子和 Clojure 中的原子之间的
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 与 google guice 相当的 clojure 是什么?

    我遇到了 google guice 但无法真正理解它以及它的作用 尽管它周围似乎有很多炒作 我希望从 clojure 的角度了解该库 以及为什么在 clojure 应用程序中需要 不需要它 以及该语言中是否内置了类似的内容 由于 Java
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的

随机推荐

  • SQL Server 存储过程中的可选参数

    我正在写一些存储过程 https en wikipedia org wiki Stored procedure在 SQL Server 2008 中 这里可能存在可选输入参数的概念吗 我想我总是可以传入 NULL 作为我不想使用的参数 检查
  • C#:保留类中构造函数的引用参数

    基本上我希望能够引用类实例内的变量 但我希望引用成为类变量 因此我不需要将其作为参数在类内部发送 code int num 0 myClass num print num output is 0 but i d like it to be
  • Bootstrap 轮播下一个和上一个功能不起作用

    使用最新版本并具有基本的轮播 我已经让它可以使用所有默认设置 但是当尝试添加或停止某些功能时 事情会中断或根本不起作用 我希望能够手动循环浏览图像 不希望它自动循环 我只想使用下一个和上一个按钮来循环 我在这里读过一些帖子 但解决方案不起作
  • 将闪亮应用程序部署到 Shinyapps.io 时出错

    我有一个闪亮的应用程序 它在server R file library shiny Creating the app library ggplot2 library plyr library reshape2 library scales
  • Python 3 urllib 与请求性能

    我正在使用 python 3 5 并且正在检查 urllib 模块与 requests 模块的性能 我用 python 编写了两个客户端 第一个使用 urllib 模块 第二个使用 request 模块 它们都生成二进制数据 我将其发送到基
  • 在循环中初始化变量[重复]

    这个问题在这里已经有答案了 我试图弄清楚初始化某些变量时的最佳实践是什么 我的代码现在看起来像这样 int nHexCount 0 int prevState sc state bool bOnlySpaces true bool bIsV
  • 编译器处理包含保护头的开销有多大?

    为了加速大型源文件的编译 修剪翻译单元中使用的标头数量是否更有意义 或者编译代码的成本是否远远超过处理包含保护的时间标头 如果后者是真的 那么工程工作最好花在创建更多 轻量级的标头上 而不是更少 那么 现代编译器需要多长时间才能处理有效包含
  • 比较 nginx+Apache+mod_wsgi 与 nginx+uWSGI?

    在生产中使用 nginx Apache mod wsgi 与 nginx uWSGI vurtualenv 有何优缺点 我在自 2007 年以来开发的 mod wsgi 中看到了第一个变体的优点 并且具有更稳定的版本和易于管理 第二种变体的
  • Magento 以编程方式删除产品图像

    这肯定是一个非常简单的编程任务 我绝对无法在网上找到任何有关它的信息 基本上 我正在尝试删除产品图像 我想删除产品媒体库中的所有图像 我可以在不为如此简单的任务编写一百万行代码的情况下完成此操作吗 请注意 我已经尝试过 attributes
  • ActiveModel::ForbiddenAttributesError + cancan + Rails 4 + 具有作用域控制器的模型

    我正在使用 cancan 1 6 10 和 Rails 4 0 0 我有一个名为 App 未限定范围 的模型和一个控制器 Admin AppsController 其限定范围 即 app controllers admin apps con
  • 如何为json可序列化对象设置默认值?

    我想设置一个默认值AvailableService 对于原语来说它足够简单 我将如何使用自定义对象来做到这一点 class Submenu extends Equatable JsonKey defaultValue final Strin
  • Identity Server 4 上授权客户端的自定义端点

    我希望我的 Identity Server 4 服务器提供附加服务 例如 MyAdditionalService 对于一些注册客户 他们将通过在服务器上定义的自定义端点来使用该服务 我正在考虑为我的该服务定义一个 API 例如 名为 myA
  • 如何捕获 UITextField 文本的变化?

    我查看了所有类似的问题 它们与我所问的不同 我需要捕捉 UITextField 中实际文本的变化 而不仅仅是编辑状态 当视图加载时 它将成为第一响应者 我需要知道何时输入文本 以便我可以在导航栏中启用 下一步 如果可以的话请帮助我 这确实阻
  • 寻求:如何将 jsDoc 与 Webstorm IDE 一起使用的示例 (v 4)

    我仍在学习 js 并尝试 Webstorm IDE 这看起来很不错 包括跳转到 var function 声明 我可以看到如何获取 jsdoc 评论的模板 但我对此没有经验 并且正在寻找如何在评论中提供更多详细信息以及如何提供的示例view
  • 类型“Observable>”不可分配给类型“Observable<>”

    我有这个代码片段 SubmitTransaction transNumber string transactionRequest ITransactionRequestObj Observable
  • MySQL 1443:这是什么意思?

    我正在尝试在 MySQL 5 0 中进行以下形式的更新 update mytable myfield t set f blah where t id in select v id from myview v where MySQL 告诉我
  • 如何在 Delphi 中更改 TabControl 中活动 TAB 的颜色

    如何更改 TabControl 在 FireMonkey 上 中活动 TAB 的颜色 如下所示 有两种方法可以实现这一点 1 第一个选项是您可以创建定制风格 for 选项卡控件 from T样本 风格设计师 然后您可以添加您想要在自定义设计
  • 如何分别用其名称替换逗号分隔的部门 ID?

    我的桌子是这些 员工表 id name department 1 Carrera 1 2 Taylor 1 2 部门表 id name 1 CS 2 IT
  • 从 mongoDB 数组中获取特定元素[重复]

    这个问题在这里已经有答案了 我有像下面这样的 mongo 集合 auther xyz location zzz books book1 b1 date 2 3 00 book1 b2 date 4 9 00 auther pqr locat
  • 从命令行将 clojure 源代码编译为类(AOT)(不使用 lein)

    我正在尝试将 clojure 源代码编译成类文件 并仅使用命令行运行它 没有 lein 也没有 可能 回复 我有 core cljsrc hello目录 src hello core clj 这是源代码 ns hello core defn