问题标签 [jvm-languages]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - Clojure 可以这样安装吗?
我下载了 Clojure 1.2 https://github.com/downloads/clojure/clojure/clojure-1.2.0.zip,将其解压缩到 /Library 目录下,创建 CLOJURE_HOME,将 $CLOJURE_HOME/script 添加到我的 $PATH 中。
当我尝试运行位于脚本目录下的 clj 或 repl 脚本时,我收到此错误:
线程“main”中的异常 java.lang.NoClassDefFoundError: jline/ ConsoleRunner 原因:java.lang.ClassNotFoundException: jline.ConsoleRunner at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController。 doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java: 301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
好的,jline.jar 不在 CLASSPATH 中,所以我检查了 clj 和 repl 脚本:
我在 $CLOJURE_HOME/script 下下载了 jline.jar,但我仍然遇到同样的错误。
这让我想到了一个问题:无论如何, https://github.com/downloads/clojure/clojure/clojure-1.2.0.zip
的作用是什么?
它应该用于安装 Clojure 吗?还是只是为了构建和获取 clojure.jar?
我注意到没有人谈论以这种方式安装 Clojure。
我错过了什么吗?
clojure - 地图降低复杂度
让我们假设我有这个输入:列表列表
(def list-of-list-3 (list (list 1 2 3) (list 4 5 6) (list 7 8 9))
(map #(reduce * %1) list-of-list3 )
在这种情况下,map-reduce 的复杂度为 O(n^2)?
map-reduce 被翻译成两个嵌套的 for 吗?
因此,当我在 clojure REPL 上运行上述示例时,复杂度时间看起来像 O(n)。
当我复制输入大小时( list-of-list-6 (list (list 1 2 3) (list 4 5 6) (list 7 8 9) (list 8 2 3) (list 9 8 1) (list 7 6 4)) ) 时间以线性方式增加,而不是二次增加。
谁能说出为什么?
提前致谢
clojure - 从 Lisp 学习 Clojure
我正在认真考虑让 Clojure 成为我的新黑客语言,因为我喜欢 Lisp,但在 CL 和 Scheme 方面存在一些问题。我以前从未在 Java 环境中工作过,我的 lisp 经验仅限于通过“SICP”和“The Little Schemer”工作。
我需要知道什么?关于“Clojure 方式”有什么好的资源吗?关于 Clojure 风格的任何资源?我找到了 Mark Volkmann 的优秀页面,但我浏览过的书似乎有点多余。
另外,关于Java,我需要了解什么?我宁愿不学习 Java 只是为了学习 Clojure,但我想我至少必须知道一点。另外,工作流程是什么样的?我的经验仅限于动态语言,所以我不知道在 JVM 上分发没有源的应用程序需要做什么。
我显然已经用谷歌搜索了这个,但是有大量的信息,而不是很多“clojure 特定”的东西。
我想我正在寻找一些关于我应该以某种逻辑顺序阅读的文学类型的明智建议。
java - 添加默认包导入
在 Java、Scala 或通常的任何 JVM 语言中,有一组默认导入的包。例如,Java 会自动导入java.lang
,您无需在 Java 代码文件中执行此操作。
现在我不知道究竟是哪个组件负责这个(编译器?JVM?),但是有没有办法让额外的包甚至默认导入的类?
假设您有一个包定义了您在整个项目中使用的一组实用程序函数(一个示例可以scala.math
在 Scala 中),如果您能够在每个与数学相关的类中跳过它的导入,那就太好了。
java - 基于堆栈的机器依赖于基于寄存器的机器?
普通 CPU(例如 Android 设备)是基于寄存器的机器。Java 虚拟机是基于堆栈的机器。但是基于堆栈的机器是否依赖于基于寄存器的机器才能工作?基于堆栈的机器不能因为不是操作系统而孤独地运行吗?除 JVM 外,是否有任何基于堆栈的机器示例?有人说 1 个操作数,2 个操作数;你为什么需要这个?
scala - Scala 泛型 - 为什么我不能在泛型类中创建参数化对象?
我目前正在学习scala。
为什么此代码不起作用:
我得到:
错误:需要类类型,但发现 T
代替了var y - new T()
是因为从java中擦除类型吗?有没有办法解决这个问题 - 在泛型函数中创建 T 类型的变量?
java - 生成“你好,世界!” 带有 Java ASM 库的类
我已经开始为我正在处理的编译器项目使用 ASM API。但是,我发现文档对于很多地方的新手来说都不是很清楚,我认为有一个很好的可靠示例来生成一个简单地打印“Hello, World!”的类。将是一个很好的例子。
目前,我可以生成一个带有 main() 的类(使用 ClassWriter、ClassVisitor 和 MethodVisitor 类),但我似乎无法弄清楚如何生成 main 的主体。谁能给我一个在 ASM 中生成类文件的示例:
- 包含一个 main()
- 在 main() 中创建一个本地字符串变量,其值为“Hello, World!”
- 打印变量
concurrency - Akka 作为 Clojure 的并发模型
看起来Akka框架有很多很酷的东西(我不是很了解框架,希望尽快深入研究)。
是否鼓励在 Clojure 中使用 Akka?在 Clojure 项目中使用 Akka 作为并发模型并放弃内置设施是否有意义?
clojure - 为 Clojure 项目设置 CLASSPATH
我有一个简单的项目结构:
导出类路径: $ export CLASSPATH=$CLASSPATH:src:lib/*
尝试运行 Clojure 文件: java -cp $CLASSPATH -jar lib/clojure.jar src/wizard-game.clj
但我得到了:
线程“主”java.io.FileNotFoundException 中的异常:无法在类路径上找到 clojure/contrib/ trace_init.class 或 clojure/contrib/trace.clj:
原因:java.io.FileNotFoundException:找不到 clojure/contrib/在类路径上跟踪_init.class 或 clojure/contrib/trace.clj:
好的,这是一个类路径问题,但我做错了什么/在哪里?
有没有更好的方法来尝试运行它?
更新:
我试过这个命令:
java -classpath $CLASSPATH clojure.main src/wizard-game.clj
现在运行正常。
clojure - Clojure 是编译的还是解释的?
我在某处读到 Clojure 已编译。它真的像 Java 或 Scala 那样编译,而不是像 Jython 或 JRuby 那样解释吗?