- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 clojure 项目中使用一个可更改的文件。 (Java 1.8.0_144 OpenJDK 64 位服务器虚拟机上的 Manjaro Linux 和 Leiningen 2.8.0)
所以,我尝试了... ($ echo resources/temp.txt => 你好)
(ns test.core
(:require [clojure.java.io :refer [writer input-stream]]
[clojure.java.io :as io])
(:gen-class))
(str (io/resource ""))
(defn -main
[]
(with-open [r (input-stream (io/resource "temp.txt"))]
(loop [c (.read r)]
(if (not= c -1)
(do
(print (char c))
(recur (.read r))))))
(with-open [r (writer (.getFile (io/resource "temp.txt")))]
(.write r "See you!"))
)
project.clj 在这里...
(defproject test "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.8.0"]]
:main test.core)
这个程序可以在lein-run中运行
$ lein run
Hello
$
但这不能在 lein-uberjar -> java -jar test-0.1.0-SNAPSHOT-standalone.jar 中运行
$ lein uberjar
$ java -jar test-0.1.0-SNAPSHOT-standalone.jar
Exception in thread "main" java.io.FileNotFoundException: /home/***/Documents/test/target/test-0.1.0-SNAPSHOT-standalone.jar!/temp.txt (
No such file or directory)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at clojure.java.io$fn__9522.invokeStatic(io.clj:230)
at clojure.java.io$fn__9522.invoke(io.clj:230)
at clojure.java.io$fn__9459$G__9428__9466.invoke(io.clj:69)
at clojure.java.io$fn__9526.invokeStatic(io.clj:242)
at clojure.java.io$fn__9526.invoke(io.clj:240)
at clojure.java.io$fn__9459$G__9428__9466.invoke(io.clj:69)
at clojure.java.io$fn__9534.invokeStatic(io.clj:261)
at clojure.java.io$fn__9534.invoke(io.clj:259)
at clojure.java.io$fn__9459$G__9428__9466.invoke(io.clj:69)
at clojure.java.io$fn__9496.invokeStatic(io.clj:166)
at clojure.java.io$fn__9496.invoke(io.clj:166)
at clojure.java.io$fn__9472$G__9424__9479.invoke(io.clj:69)
at clojure.java.io$writer.invokeStatic(io.clj:119)
at clojure.java.io$writer.doInvoke(io.clj:104)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at test.core$_main.invokeStatic(core.clj:15)
at test.core$_main.invoke(core.clj:7)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.AFn.applyTo(AFn.java:144)
at test.core.main(Unknown Source)
如何获得正确的路径?谢谢。
最佳答案
一个问题是 .getFile
在 jar 文件中不起作用,因为您是从 zip 文件中读取的,而不是文件系统上的目录结构。此外,不建议更改 jar 文件中的文件(我不确定这是否可能)。另见 Reading a resource file from within jar .
关于jar - Clojure:如何使用 lein-uberjar 包含资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47249313/
现在,当我运行 lein 时,它倾向于: (1) 杀死 lib/* 然后 (2) 重新安装/下载各种库到lib/ 现在,这是一个问题,因为我倾向于将我需要的 *.jars 复制到 lib/中,但随后
我跑了lein uberjar在我的项目上,它创建了相应的 jar 文件。当我运行 jar ClassNotFoundException: explodingdots.core被抛出。我指定了 exp
lein figwheel 和 lein cljsbuild auto 有什么区别,因为我相信它们都是用来编译 clojurescript 的。 使用一个比另一个有什么好处吗? 最佳答案 格威尔 它们
在我看来,lein run 和 lein Tampoline 之间的唯一区别是后者退出 Leiningen 的 JVM 以节省内存。 这似乎总是一个好主意,那么为什么这个功能不包含在lein run中
我正在尝试实现我正在使用的遗留运行时所需的 Java 接口(interface),并实例化此实现的实例以将其传递给运行时。但是当我运行 lein uberjar我看到一个异常,找不到该类。两个命名空间
我想从我的 lein repl 控制一些 lein-plugins(lein-cljs build、lein-aws、lein-beanstalk)。有没有办法做到这一点? 例如,我希望能够调用 插件
我正在制作一个部署在 Heroku 上的 Clojure/ClojureScript 网站。我正在使用 Leiningen 进行项目管理。 我想用 LESS 编写我的样式表。我需要构建过程将 LESS
新手 Clojure 和 leiningen 问题: 鉴于我下面项目中的代码片段,这适用于 lein repl : ==> (-main "something") 产生预期的“命令:某事......正
当前的问题是,当我使用 lein run 运行程序时,它会到达 (read-line) 部分,而我无法摆脱它,意思是:读取行永远不会返回。 相关代码如下: (def command (atom "")
在基于解放者的clojure项目中,我们使用datomic作为DB。将本地开发数据库迁移到S3托管的数据库并在项目上添加所需的依赖关系之后,我们无法启动REPL,但Liberator堆栈通过lein
假设我找到了一个很酷的 clojure 库,例如 https://github.com/clojurewerkz/buffy 现在我想使用它。而且它只存在于 github 上。 我该怎么做?我希望有一
我刚刚开始使用 lein 开始我的第一个 clojure 项目,代码如下: (ns fileops.core (:use [clojure.core :only (slurp)]
我一直在做的一个项目在使用 leiningen interactive 时突然开始抛出异常。运行“lein test”没问题,我的测试运行并通过了。异常仅在使用交互式时发生: Exception in
我有一个hello.clj如下。 (ns hello) (defn hi [] (println "HI")) 通常,我可以按如下方式使用main.clj中的此功能。 hello.clj位于包含mai
我想编写一个 shell 脚本来启动 lein repl,然后在保持 repl 运行的同时提供一些命令。 例如,我可能想做相当于: lein repl (dev) (setup) 我可以通过 echo
我一直在尝试设置 Clojure 以使用泛音。 但是,当我尝试在项目文件夹中启动 Lein 时收到此消息: Exception in thread "main" java.lang.Exception
我正在使用“lein uberjar”为我的项目制作一个可执行的 jar 文件。 jar 已正确创建并按预期运行。 我只想知道是否可以不将我的源 .clj 文件包含在生成的 .jar 中,因为我打算分
我是莱宁根的新手。 当我尝试执行以下操作时, $ lein clean jar 我有 Wrong number of arguments to clean task. Expected [] $ 如何
我想配置 Lein 以便我看到一个彩色的 REPL,就像 Emacs 的 nREPL。我怎样才能做到这一点? 我在谷歌上找不到任何帮助。我需要先学习 Bash 脚本吗? 最佳答案 Ultra ,“用于
我在OS X 10.10.5和Ubuntu 16.04上都运行Sublime Text 3 Build 3117。我刚刚在两者上都安装了Leiningen 2.6.1,然后开始在SublimeREPL
我是一名优秀的程序员,十分优秀!