clojure和robovm用于二进制可执行文件?

时间:2015-03-24 03:06:21

标签: clojure jvm robovm

我有兴趣使用robovm将clojure代码编译为本机应用程序,类似于scala https://github.com/roboscala/roboscala-samples

我需要运行小脚本,创建一个原生二进制文件可以帮助我避免一个耗费大量资源并且启动缓慢的大型jvm,基本上我不需要漂亮的oracle jvm性能,但我希望使用干净的作为clojure的简单语言

可能在robovm中运行clojure类似于scala的行为吗?或者clojure的动态特性使其无法实现?...

我找到了这个lein插件,但它只允许编译到iOS,我希望使用clojure和robovm用于桌面应用

在本教程之后,这开始很好,但最后失败了 https://github.com/robovm/robovm/wiki/Get-started-on-Linux

a lot of compiled code here......................
Compiling clojure.lang.Var (linux x86 release)
Compiling clojure.lang.ARef (linux x86 release)
Compiling clojure.lang.IRef (linux x86 release)
Compiling clojure.lang.Settable (linux x86 release)
Compiling clojure.lang.Var$1 (linux x86 release)
Compiling clojure.lang.Var$2 (linux x86 release)
Compiling clojure.lang.Var$3 (linux x86 release)
Compiling clojure.lang.Var$Frame (linux x86 release)
Compiling clojure.lang.Var$TBox (linux x86 release)
Compiling clojure.lang.Var$Unbound (linux x86 release)
Compiled 666 classes in 78.42 seconds
Linking 1971 classes
Building executable /tmp/robovm5738725927760604511.tmp/robotry.core
g++ -o /tmp/robovm5738725927760604511.tmp/robotry.core -m32 @/tmp/robovm5738725927760604511.tmp/objects -L /home/yo/Downloads/proj/robovm-1.0.0-alpha-04/lib/vm/linux/x86 -Wl,-rpath=$ORIGIN -Wl,--gc-sections -lrobovm-bc -Wl,--whole-archive -lrobovm-rt -Wl,--no-whole-archive -lrobovm-debug -lrobovm-core -lgc -lpthread -ldl -lm -lrt
Linked 1971 classes in 223.52 seconds
/tmp/robovm5738725927760604511.tmp/robotry.core -rvm:log=warn
java.lang.ExceptionInInitializerError
    at clojure.lang.Namespace.<init>(Namespace.java)
    at clojure.lang.Namespace.findOrCreate(Namespace.java)
    at clojure.lang.Var.internPrivate(Var.java)
    at robotry.core.<clinit>(Unknown Source)
Caused by: java.lang.UnsupportedOperationException: can't load this type of class file, compiling:(clojure/core.clj:29:7)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java)
    at clojure.lang.Compiler.analyze(Compiler.java)
    at clojure.lang.Compiler.access$100(Compiler.java)
    at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java)
    at clojure.lang.Compiler.analyze(Compiler.java)
    at clojure.lang.Compiler.analyze(Compiler.java)
    at clojure.lang.Compiler.eval(Compiler.java)
    at clojure.lang.Compiler.load(Compiler.java)
    at clojure.lang.RT.loadResourceScript(RT.java)
    at clojure.lang.RT.loadResourceScript(RT.java)
    at clojure.lang.RT.load(RT.java)
    at clojure.lang.RT.load(RT.java)
    at clojure.lang.RT.doInit(RT.java)
    at clojure.lang.RT.<clinit>(RT.java)
    ... 4 more
Caused by: java.lang.UnsupportedOperationException: can't load this type of class file
    at java.lang.ClassLoader.defineClass(ClassLoader.java)
    at clojure.lang.DynamicClassLoader.defineClass(DynamicClassLoader.java)
    at clojure.lang.Compiler$ObjExpr.getCompiledClass(Compiler.java)
    at clojure.lang.Compiler$FnExpr.parse(Compiler.java)
    ... 19 more

任何人都有幸用robovm编译clojure?..是关于如何实现这一点的一些资源或教程?...谢谢!

0 个答案:

没有答案