Tag: clojure

从JVM发送POSIX信号

如何从JVM中发送POSIX信号? (在Java或Clojure中) 在我尝试使用谷歌搜索之前,我从未想过这会是一个问题 – 有很多关于处理信号的信息,但没有关于发送它们的信息。 如果没有使用JNI或调用shell来执行“kill”,还有其他方法可以向PID发送信号吗?

创建一个用于从Java / Clojure执行的jar文件

我想创建一个用java和clojure实现的jar文件。 这是我采取的步骤。 让我的java代码调用clojure代码 我可以生成一个包含clojure核心和我的clojure代码的jar文件(ThingOne-1.0.0-SNAPSHOT-standalone.jar),我还可以获得一个使用jar文件中的clojure代码的类文件(HelloJava.class)通过这个网站 – http://walkwithoutrhythm.net/blog/2012/03/26/how-to-call-clojure-1-dot-3-functions-from-java/ java代码如下:clojure代码作为ThingOne导入 import ThingOne.*; public class HelloJava { public static void main(String[] args) { System.out.println(“Hello from Java!”); core.foo (12345); } } 我可以运行此命令来使用代码: java -cp ‘ThingOne-1.0.0-SNAPSHOT-standalone.jar:.’ HelloJava 制作一个jar文件 我制作了一个具有这种结构的jar目录。 ├── MANIFEST.MF └── jar └── ThingOne-1.0.0-SNAPSHOT-standalone.jar MANIFEST.MF的内容是 Manifest-Version: 0.1 Main-Class: HelloJava Class-Path: jar/ThingOne-1.0.0-SNAPSHOT-standalone.jar 我可以使用jar cvfm hello.jar jar/MANIFEST.MF HelloJava.class获取一个jar文件。 但是,clojure jar文件(ThingOne-1.0.0-SNAPSHOT-standalone.jar)不包含在此jar文件中,只是引用了。 如何创建一个包含java类文件和clojure jar文件的jar文件?

如何将PEM编码的椭圆曲线公钥加载到Bouncy Castle?

我有一个PEM编码的Elliptic Curve公钥,我正在尝试加载到Bouncy Castle中,到目前为止我尝试的所有内容都失败了。 这是我正在尝试加载的密钥的示例: —–BEGIN PUBLIC KEY—– MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBhsFCcWY2GaiN1BjPEd1v+ESKO6/0 D0sUR4y1amHnOr3FZx6TdqdoSBqxownQrnAKGCwagGxUb7BWwPFgHqKQJHgBq+J7 F+6m5SKAEL1wS5pqya91N7oudF3yFW8oZRE4RQRdSLl3fV2aVXKwGDXciwhUhw8k x5OS4iZpMAY+LI4WVGU= —–END PUBLIC KEY—– 它由NodeJS Crypto模块生成,曲线名称为secp521r1。 它稍后由npm包密钥编码器编码到PEM中。 我已经在JavaScript(实际上是ClojureScript)中使用它来validation签名,现在我需要使用Javavalidation服务器上的签名(实际上是Clojure)。 我尝试从密钥中删除守卫,转换为byte []并创建X509EncodedKeySpec。 那没用。 它崩溃了: InvalidKeySpecException encoded key spec not recognised org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePublic (:-1) 我用来加载密钥的代码: KeyFactory. getInstance(“ECDSA”, “BC”). generatePublic(new X509EncodedKeySpec(publicKey.getBytes())) 以防万一,这是我的Clojure代码: (-> (KeyFactory/getInstance “ECDSA”) (.generatePublic (X509EncodedKeySpec. (.getBytes public-key)))) 我也尝试过PKCS8EncodedKeySpec,但是我收到了错误: InvalidKeySpecException key spec not recognised org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePublic (:-1) 我也在这里试过这个方法: https ://gist.github.com/wuyongzheng/0e2ed6d8a075153efcd3#file-ecdh_bc-java-L47-L50但是在运行decodePoint时我收到错误: […]

初学者到swing

我想创建一个简单的Swing应用程序。 然而,我对Swing的经历非常非常非常少。 我想创建一个一个窗口应用程序,每隔5分钟刷新一次,我会做一个屏幕抓取的内容。 我正在使用Clojure编写代码。 我认为Swing是采用这种方式的方法,但如果还有其他更好的选择,我也希望能够更多地了解这些。 使用Swing我需要用什么代码? (我应该使用哪些课程等) 谢谢,Alex

如何直接从Java调用Clojure函数

我有Clojure函数generate-id 。 源代码: (ns url62.core) … (defn generate-id [] (int-to-base62 (java.math.BigInteger. (clojure.string/replace (str (java.util.UUID/randomUUID)) “-” “”) 16))) https://github.com/8protons/url62/blob/master/src/url62/core.clj 我需要从Java执行此函数。 我试过这样的代码: IFn generateId = Clojure.var(“url62.core”, “generate-id”); generateId.invoke(UUID.randomUUID()); 但这不起作用: java.lang.IllegalStateException: Attempting to call unbound fn: #’url62.core/generate-id at clojure.lang.Var$Unbound.throwArity(Var.java:43) at clojure.lang.AFn.invoke(AFn.java:32) at clojure.lang.Var.invoke(Var.java:379)

如何在Clojure中调用重载的Java方法

对于此示例Java类: package foo; public class TestInterop { public String test(int i) { return “Test(int)”; } public String test(Object i) { return “Test(Object)”; } } 当我启动Clojure并尝试调用test(int)方法时,将调用test(Object)方法,因为Clojure会自动将整数写入java.lang.Integer对象。 如何强制Clojure调用test(int)方法? user=> (.test (new foo.TestInterop) 10) “Test(Object)” 我想在AWT中调用Component.add(Component comp, int index)的方法,而是继续调用add(Component comp, Object constraints) ,因此工具栏上的按钮总是以错误的顺序出现。

两张地图之间的差异

我需要非常有效地比较Clojure / Java中的两个映射,并返回由Java的.equals(..)确定的差异,其中nil / null等效于“not present”。 即我正在寻找一种最有效的方式来编写一个函数,如: (map-difference {:a 1, :b nil, :c 2, :d 3} {:a 1, :b “Hidden”, :c 3, :e 5}) => {:b nil, :c 2, :d 3, :e nil} 我更喜欢不可变的Clojure映射作为输出,但如果性能提升很重要,Java映射也会很好。 对于它的价值,我的基本测试用例/行为期望是对于任何两个映射a和b,以下将是相等的(最多等于null =“Not present”): a (merge b (difference ab)) 实现这个的最佳方法是什么?

如何在Java / Clojure中获取所有字母的集合?

在Python中,我可以这样做: >>> import string >>> string.letters ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’ 有没有办法在Clojure中做类似的事情(除了在某处复制和粘贴上面的字符)? 我查看了Clojure标准库和java标准库,但找不到它。

如何在Clojure中创建原始的二维(2d)双精度数组?

我是Clojure interoping的Java API要求我传递一个2d的双精度数组; 双[][]。 如何在Clojure中创建一个原始的二维双数组? 我正在寻找这样的东西 (double-array-2d [[1 2] [3 4]]) 此函数的Java返回类型为double [] []。

如何将类型化的集合从clojure传递给java?

我知道clojure / java interop的基础知识:从clojure调用java,反之亦然。 但是,我无法将clojure中的类型集合返回到java。 我试图从调用clojure的java代码中看到一些自然的List 。 Java Object: public class TypedObject { private OtherType1 _prop1; public OtherType1 getProp1() { return _prop1; } public void setProp1(OtherType1 prop1) { _prop1 = prop1; } } CLojure method: (defn -createListOfTypedObjects “Creates and returns a list of TypedObjects” [input] ;Do work here to create and return list of TypedObjects […]