org-mode babel中的Groovy?

时间:2018-02-20 20:50:43

标签: groovy org-mode

我正在尝试学习Groovy并希望使用Emacs org-mode。我已经Groovy In Action并尝试在可用来源中运行第一个程序,#+begin_src groovy :results output List fibo = [1, 1] //#A List gold = [1, 2] //#B while ( ! isGolden( gold[-1] ) ) { //#C fibo.add( fibo[-1] + fibo[-2] ) //#D gold.add( fibo[-1] / fibo[-2] ) //#E } println "found golden ratio with fibo(${ fibo.size-1 }) as" println fibo[-1] + " / " + fibo[-2] + " = " + gold[-1] println "_" * 10 + "|" + "_" * (10 * gold[-1]) def isGolden(candidate) { //#F def small = 1 //#G def big = small * candidate //#H return isCloseEnough( (small+big)/big, big/small) } def isCloseEnough(a,b) { return (a-b).abs() < 1.0e-9 } //#A Initial Fibonacci numbers //#B Golden ration candidates //#C Last gold candidate //#D Next fibo number //#E Next golden candidate //#F Candidate satisfies golden rule //#G Smaller section //#H Bigger section #+end_src

Caught: java.lang.ClassFormatError: Illegal class name "groovy-31624d60$isGolden" in class file groovy-31624d60$isGolden
java.lang.ClassFormatError: Illegal class name "groovy-31624d60$isGolden" in class file groovy-31624d60$isGolden
    at groovy-31624d60.run(groovy-31624d60:4)

给出了这个错误

#+begin_src groovy :results raw
today = new Date()
#+end_src

#+RESULTS:
Tue Feb 20 15:44:50 EST 2018

我可以很好地想象我做了一些愚蠢的事情,但没有文档,我只是在猜测。然而,简单的事情已经奏效了:

>groovysh Listing_01_01_Gold.groovy

不确定该怎么做。但随后>groovy Listing_01_01_Gold.groovy,即在终端中也不会运行Configuration。显然,我在这里遗漏了一些基本的东西......

1 个答案:

答案 0 :(得分:0)

它反对文件名中的破折号:groovy-31624d60。

您需要做的就是将破折号更改为ob-groovy.el第87行的下划线:

(pcase result-type
  (`output
   (let ((src-file (org-babel-temp-file "groovy_")))   ;;; <---HERE
     (progn (with-temp-file src-file (insert body))
          (org-babel-eval
           (concat org-babel-groovy-command " " src-file) ""))))
  (`value ...

我不明白为什么他们使用反引号而不是引号。

编辑:&#34;值&#34;需要第二次短划线到下划线替换。输出,在文件中向下几行。