首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Clojure : java interop,为什么这段代码不能工作?

Clojure是一种运行在Java虚拟机上的函数式编程语言,它与Java之间有很好的互操作性。Clojure提供了一种简洁、表达力强大的编程模型,可以利用Java的库和工具生态系统。

在给出为什么这段代码不能工作之前,我需要看到具体的代码示例。然而,根据提供的问题描述,我可以给出一些可能导致代码无法工作的常见原因:

  1. 语法错误:Clojure是一种严格的语法语言,可能存在括号不匹配、函数调用错误等语法错误。请检查代码中的括号是否正确匹配,并确保函数调用的参数和参数数量正确。
  2. 缺少依赖:如果代码中使用了第三方库或其他命名空间中的函数,需要确保这些依赖已经正确引入。可以使用Clojure的依赖管理工具(如Leiningen或Clojure CLI)来管理依赖关系。
  3. Java互操作性问题:由于Clojure与Java之间的互操作性,可能存在与Java代码交互时的问题。请确保代码中的Java调用正确,并且Java类和方法的命名和参数类型与实际情况相匹配。
  4. 运行环境配置问题:有时代码无法工作是由于运行环境配置问题引起的。请确保你的开发环境和运行环境已经正确配置,并且所有必要的库和工具已经安装。

以上是一些可能导致代码无法工作的常见原因,具体的问题需要查看代码示例才能给出更准确的答案。如果你能提供具体的代码示例,我将能够更好地帮助你找到问题所在并提供解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java扩展Nginx之五:五大handler(系列最核心)

invoke方法中 接下来写代码试试,新增MyInitHandler.java代码如下: package com.bolingcavalry.handlerdemo; import nginx.clojure.NginxClojureRT...对功能和职责的划分,官方建议将鉴权的工作都交给access handler来做: 正常情况下,一次请求被前面几种handler执行的顺序如下: 写一个access handler的配置和代码验证试试...("MyLogHandler, logUserAgent [" + logUserAgent + "], filePath [" + filePath + "]"); } // 下面这段代码来自官方...demo,实测发现这段代码在打印日志的逻辑中并未发挥作用, // 不论是否删除,日志输出的内容都是相同的 /* @Override public String[] variablesNeedPrefetch...的作用而已,看看就好 variablesNeedPrefetch方法的代码被我注释掉了,因为实际尝试发现不论这段代码是否存在,都不回影响日志的输出,去看源码也没弄明白…(水平有限,望理解),于是就注释掉了

35550

资深架构师谈Java——最牛逼的编程语言Java超越了所有咒骂它的“动态语言”Java的“继承人”没能超越它Java没有特别讨厌的地方结论程序员进阶方法

很早的时候,计算机系的学生用Scheme或者Pascal入门,现在大部分学校用Java。这也许就是为什么很多人恨Java,瞧不起用Java的人。提到Java,感觉就像是爷爷那辈人用的东西。...静态类型的缺乏,也导致了Python不可能有很好的IDE支持,你不能完全可靠地“跳转到定义”,不可能完全可靠地重构(refactor)Python代码。...甚至有人把SICP,The Little Schemer等名著里的代码,全都用Clojure改写一遍,结果完全失去了原作的简单和清晰。...既然Java没有特别大的问题,不会让你没法做好项目,为什么要去试一些不靠谱的新语言呢?...3、不管你是没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以学。(小白就不要学了,先学好基础) 4、不管你是觉得自己很牛B,一般需求都能搞定。

79240

JAVA,说句公道话

很早的时候,计算机系的学生用Scheme或者Pascal入门,现在大部分学校用Java。这也许就是为什么很多人恨Java,瞧不起用Java的人。提到Java,感觉就像是爷爷那辈人用的东西。...静态类型的缺乏,也导致了Python不可能有很好的IDE支持,你不能完全可靠地“跳转到定义”,不可能完全可靠地重构(refactor)Python代码。...甚至有人把SICP,The Little Schemer等名著里的代码,全都用Clojure改写一遍,结果完全失去了原作的简单和清晰。...它也许缺少一些方便的特性,然而长久以来用Java进行教学,用Java工作,用Java开发PySonar,RubySonar,Yin语言,…… 我发现Java其实并不像很多人传说的那么可恶。...既然Java没有特别大的问题,不会让你没法做好项目,为什么要去试一些不靠谱的新语言呢?

75450

资深架构师谈Java——最牛逼的编程语言

很早的时候,计算机系的学生用Scheme或者Pascal入门,现在大部分学校用Java。这也许就是为什么很多人恨Java,瞧不起用Java的人。提到Java,感觉就像是爷爷那辈人用的东西。...静态类型的缺乏,也导致了Python不可能有很好的IDE支持,你不能完全可靠地“跳转到定义”,不可能完全可靠地重构(refactor)Python代码。...甚至有人把SICP,The Little Schemer等名著里的代码,全都用Clojure改写一遍,结果完全失去了原作的简单和清晰。...它也许缺少一些方便的特性,然而长久以来用Java进行教学,用Java工作,用Java开发PySonar,RubySonar,Yin语言,…… 我发现Java其实并不像很多人传说的那么可恶。...既然Java没有特别大的问题,不会让你没法做好项目,为什么要去试一些不靠谱的新语言呢?

1.4K70

Clojure与LispClojure与Lisp

所以,为什么上个世纪50年代的编程语言,到现在还没有过时?简单说,因为这种语言本质上不是一种技术,而是数学。数学是不会过时的。...在读取期运行代码,使得用户可以重新调整(reprogram)Lisp的语法; 在编译期运行代码,则是Lisp宏的工作基础; 在运行期编译代码,使得Lisp可以在Emacs这样的程序中,充当扩展语言(extension...Clojure简介 运行于Java虚拟机的List方言Clojure....Clojure的设计原则 (1)简单: 鼓励纯函数,极简的语法(少数special form),个人也认为clojure不能算是多范式的语言(有部分OO特性),为了支持多范式引入的复杂度,我们在C++和...,能够跟Java代码无缝互操作,JVM上所有资源都可以为Clojure所用。

1.8K30

Java扩展Nginx之七:共享内存

进行java开发时,用共享内存在多个worker之间同步数据 本文由以下内容组成: 先在java内存中保存计数,放在多worker环境中运行,验证计数不准的问题确实存在 用nginx-clojure提供的...com.bolingcavalry.sharedmap; import nginx.clojure.java.ArrayMap; import nginx.clojure.java.NginxJavaRingHandler...; import java.io.IOException; import java.util.Map; import java.util.UUID; import static nginx.clojure.MiniConstants.CONTENT_TYPE...package com.bolingcavalry.sharedmap; import nginx.clojure.java.ArrayMap; import nginx.clojure.java.NginxJavaRingHandler...,相信您一眼就看懂了,我这里挑几个重点说明一下: 写上述代码时要牢一件事:这段代码可能运行在高并发场景,既同一时刻,不同进程不同线程都在执行这段代码 NginxSharedHashMap类是ConcurrentMap

80440

.NET简谈互操作(五:基础知识之Dynamic平台调用)

为什么要有内核,就是用来处理一些我们平时不能随便动的东西,就拿LoadLibrary方法来讲,可能它就是进入了内核然后设置相关参数,帮我们保存了非托管DLL在内存的代理存根,当我们下次又进入到内核的时候...,系统去检查一下,发现有过一次调用了,所以下次就去读取存根中的地址进行调用),系统会去加载非托管DLL文件到内存并设置相关数据,以便后期使用;动态调用的原理就是我们把这部分的工作自己手动来做,比如第一次调用非托管...,我们来看全部代码; namespace CSharp.Interop { /// /// 动态平台调用,手动加载非托管DLL文件 /// </summary...,所以我们有理由相信我们的add委托已经变成了非托管代码的引用; namespace CSharp.Interop { [UnmanagedFunctionPointer(CallingConvention.StdCall...= adddelegate(10, 20); bool isfree = Win32Api.FreeLibrary(dlladdr); } } } 这段小小的代码

36120

Clojure 运行原理之字节码生成篇

上一篇文章讲述了 Clojure 编译器工作的整体流程,主要涉及 LispReader 与 Compiler 这两个类,而且指出编译器并没有把 Clojure 转为相应的 Java 代码,而是直接使用...本文将主要讨论 Clojure 编译成的 bytecode 如何实现动态运行时以及为什么 Clojure 程序启动慢,这会涉及到 JVM 的类加载机制。...Clojure 作为一本函数式编程语言,最基本的概念是函数,没有类的概念,那么 Clojure 代码生成以类为主的 bytecode 呢?...我们知道 Clojure 里面很多“函数”其实是用宏实现的,宏在编译时会进行展开,生成新代码,上面代码中的ns、defn都是宏,展开后(在 Cider + Emacs 开发环境下,C-c M-m)可得...慢启动 明白了 Clojure 是如何实现动态运行时,下面分析 Clojure 程序为什么启动慢。

68820

100%代码覆盖率的悲剧

作者介绍 Daniel Lebrero在大数据团队担任IG的技术架构师,拥有超过15年的Java经验和4年的Clojure经验,他现在是函数式编程的大力倡导者。...不过,最近我发现自己对于测试的想法开始改变,现在我更经常说的是:“这段代码(模块)为什么要进行测试?“而不是“这段代码应该进行测试”。...“不测试我怎么知道这段代码能运行啊?” “这段代码的功能看起来很简单,没有条件,没有循环,没有转换,没有任何复杂的东西,只是一段简单的代码。”...“但任何人都可能会来更改这段代码啊,若不测试怎么能知道这段代码有没有被动过!” “好,那我们假设有人想改动这段代码,他会做什么?他只会删除它。“ “但是如果必须要进行测试,你怎么写?”...根据我的经验,做好单元测试其实是项艰难的工作。 那么100%的代码覆盖率是值得追求的吗? 我认为,我们有必要去了解这么做所带来的代价是什么。

94970

【3】利用Word模板生成文档的总结

打开和关闭操作比较简单,实现代码如下: //打开 Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application...ref oMiss, ref oMiss, ref s2, ref rep, ref oMiss, ref oMiss, ref oMiss, ref oMiss); 用简单的字符串测试,代码工作正常...如果被替换的特征串并不是独立的段落、或者位于表格中的话,上述代码能否工作正常呢?如下图所示,在段落中和表格中增加两个特征串进行替换,结果如下图所示: ? ?...这段来之不易的代码,当然要保存在CommonCode(v2.0.6)中,以后要调用Word模板实现生成新文档就非常简单了,代码如下: CommonCode.WordUtil.ReplaceAndSave...批量替换不能进行长文本的替换故不可用,遍历段落替换不能对段内的关键词进行保持格式的替换,也不完美。

2.4K50

Clojure 运行原理之编译器剖析

为了更加具体描述 Clojure 运行原理,会分两篇文章来介绍。 本文为第一篇,涉及到的主要内容有:编译器工作流程、Lisp 的宏机制。...但是 ClojureJava 不一样的地方在于,Clojure 可以在运行时进行编译然后加载,而 Java 明确区分编译期与运行期。...编译器工作流程 与解释型语言里的解释器类似,编译型语言通过编译器(Compiler)来将源程序编译为字节码。...一般来说,编译器包括两个部分: 前端:词法分析 → 语法分析 → 语义分析 后端:分析、优化 → 目标代码生成 Clojure 的编译器也遵循这个模式,大致可以分为以下两个模块: 读取 Clojure...emit 这里需要明确一点的是,Clojure 编译器并没有把 Clojure 代码转为相应的 Java 代码,而是借助 bytecode 操作库 ASM 直接生成可运行在 JVM 上的 bytecode

95230

Java扩展Nginx之四:远程调试

,当您的代码运行在nginx-clojure模块中的时候,如果能像tomcat那样远程打断点,单步调试,会大幅度提高工作效率 远程断点的效果如下图所示,通过IDEA的Remote JVM Debug功能远程连接到...nginx-clojure监听的远程debug端口,当浏览器请求触发了java代码的执行时,就会进入断点状态,停留在断点位置,可以看到堆栈和内存中的变量情况,以及单步执行: 关于工具 本篇使用的编码工具是...IntelliJ IDEA 2021.3.2 (Ultimate Edition) 关于代码 本篇直接使用《Java扩展Nginx之一:你好,nginx-clojure》中的工程和代码,这里简单回顾如下...'; } 以上就是今天要打断点调试的代码和配置了 nginx-clojure的远程调试配置 打开nginx.conf文件,在http的配置中增加以下两行,即可开启nginx-clojure的远程调试:...,可以操作如下图: 此刻,NginxClojureRT.java已经被下载下来,可以更仔细的阅读和研究nginx-clojure了: 至此,nginx-clojure的远程调试功能演示完毕,各位java

65510

世界级编程大师Bob 大叔为“干净代码”辩护遭质疑:时代变了,别用Clean Code那套要求我们了!

但好像你对我的说法很意外,所以在正式讨论类型设计之前,能不能先解释一下这个问题?这样我才能明白为什么咱们老是对不上频道。 Bob 大叔:对不上频道吗?我倒没这种感觉。...我目前的首选语言是 Clojure,它的速度只有等效 Java 程序的 1/30,没准只有同等 C 程序的 1/60。但我不在乎,毕竟我可以在必要时随时转去用 Java。...我的策略就是用 Clojure 编写毫秒级模块,因为虽然速度不快,但它却是种非常方便的语言。微秒模块用 Java 来写,速度更快但没那么方便。...这就是我对你之前论述的理解,包括“如果我的 Clojure 代码太慢,我随时可以转向 Java”,也就是说如果某个部分需要更高的性能,你就会用 Java 进行重写。 我的理解准确吗?...那为什么会这样?首先,我想我们都在输入相同的 JavaScript 代码,毕竟没人会继续用浏览器里编写的工具了。其次,我觉得这段代码的作者从没想过会有人把整个段落搞成单行形式(请注意左侧的行号)。

30840

100%代码覆盖率的悲剧

拥有超过15年的Java经验和4年的Clojure经验,他现在是函数式编程的大力倡导者。 以下为译文: 有趣的是,我对测试的观点正在发生变化。...看来他在使用Mockito测试以下代码时遇到了麻烦: 当我回应:“你不需要测试。”,他感到非常惊讶。 “但我不得不测啊!” 他说。“不测试我怎样知道这段代码能运行啊?”...“这段代码的功能看起来很简单,没有条件,没有循环,没有转换,没有任何复杂的东西,只是一段简单的老胶水代码。 “但不测试的话,任何人都可以来更改这段代码啊!”...我明白这个工作会让他的心里产生满足感,但是他的解决方法还是让我感到难过。 另一个例子 我被开发新应用程序的高代码覆盖率以及他们对BDD(行为驱动设计)的新发现所吸引。...根据我的经验,写好的单元测试其实是项艰难的工作。 那么100%的代码覆盖率是值得追求的吗? 是的,每个人都应该在一个项目中实现。我认为你必须极端地去了解这么做带来的痛苦是什么。

897100

Kotlin Native 详细体验,你想要的都在这儿

也就是说,Kotlin 准备丢掉 Java 这根拐杖了!...,Kotlin 项目组的野心真是不小,Java 诞生这么多年了,也没有做过编译成除 Java 虚拟机字节码以外的字节码的事情,Kotlin 才出来多久啊,果然具有革命性。...这个问题我已经提了 issue,参见:interop with package name failed 解决方案也比较简单,我发现这段儿 C 代码生成的时候,编译器企图对包名中的特殊字符进行替换,只不过替换的是...', '_') + '_' + this.name } 3.2 Kotlin 的 main 函数不能有包名 细心的读者应该会发现,我们前面写的 main 函数所在文件是没有 package...当然我们可以对编译器源码稍作修改就可以解决这个问题: Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/

12.2K30

JVM并不是那么重量级

我玩了一点,放弃了,相反,我和少数几个来了的人分享了这段经历。这是令人羞愧的,真正令人谦卑的。在这个世界上,我感觉自己像一个陌生人,我已经参与了这么长时间。 回到JVM的声明重。 你怎么衡量它?...java - server -Xmx512m beast.jar。如果这还不够,你可能有收入,还可以向别人请教。哦,或者StackOverflow。...与JVM的日常工作 我在我的的2012 MacBook Pro上运行了至少5个JVM进程,内存为8GB。我从来没有尝试过同时启动5个Rails应用程序。 为什么同时开启5个?...当然可以将Java作为一种语言来判断,但是要将它与虚拟机隔离开来。 我曾经也和你有一样的想法。我曾经认为JVM是个庞然大物。现在我很感谢之前对它的偏见都没有了,让成千上万的人支持它。...如果妮不能切换到JVM进行工作,至少要考虑一下可以做些什么来帮助消除来自于自己膨胀。 谢谢你花这么多时间阅读我的文章。现在去学习一些Clojure,体验什么是Simple Made Easy。

1.6K50

Clojure 开发那些事

其实也好理解,Lisp 语言诞生这么久了,为什么一直那么小众?原因就在于 Lisp 语言过于强大,不必也不可能像 Java 那么普及。你能要求每个人都能为 CTO 吗?...这一点非常重要,估计也是为什么 Clojure 较其他 Lisp 方言更流行的原因。...Intellj + Cursive 在上面语法入门部分就介绍了,Clojure 与宿主语言经常需要交互,毋庸置疑 Intellj 是 Java 开发的利器,社区版足以满足需要,不用再去做找破解版那些不道德的事情...第三方类库的选择 由于 Clojure 语言定位就是个寄宿语言,所以无论是 Web 框架,还是数据库连接池,Clojure 里都有与 Java 版相对应包装类库,大家不必担心要使用某个功能,而没有相应库的问题...调试 debug 代码一次写对的几率基本为0,掌握一定的测试技能是每个同学的基本功,下面简单介绍下 Clojure里面常用的调试方法。

1.5K20
领券