org-babel-execute-src-block执行报错

Wrong type argument: char-or-string-p, nil 源码如下: #+BEGIN_SRC plantuml :file /opt1/yuzhenrong/plantuml_config/example.png @startuml Alice → Bob: Hello @enduml #+END_SRC

我试了下,你这里的箭头是有问题的应该是 - > 两个字符合并成箭头,你的箭头是一个符号。

#+BEGIN_SRC plantuml :file ~/Downloads/example.png
@startuml
Alice -> Bob: Hello
@enduml
#+END_SRC

example

我复制了你的代码到emacs上执行,报了错的。不知道我的环境是有啥问题 Wrong type argument: char-or-string-p, nil 你生成文件的路径需要手动创建一个example.png吗,还是这些都是他自己做的?

:file 关键字后面的路径是执行后生成文件的路径,名称就是 example.png。

你好楼主,你可以试试先 M-x toggle-debug-on-error, 然后再执行,这样就会打印出详细错误信息。这个是 Emacs 里面基础的 debug 技巧,非常实用。

执行之后你可以吧错误信息贴出来看看。

你可以把代码放在 三个反引号里面,这样会好看一些, 比如

```
代码放在这里然后发送
```

Debugger entered--Lisp error: (wrong-type-argument char-or-string-p nil)
  org-babel-execute:plantuml("@startuml\nAlice -> Bob: Hello\n@enduml\11\11\11\11" ((:colname-names) (:rowname-names) (:result-params "replace" "file") (:result-type . value) (:results . "replace file") (:exports . "results") (:session . "none") (:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no") (:file . "/opt1/yuzhenrong/plantuml_config/example.png")))
  org-babel-execute-src-block(nil ("plantuml" "@startuml\nAlice -> Bob: Hello\n@enduml\11\11\11\11" ((:colname-names) (:rowname-names) (:result-params "file" "replace") (:result-type . value) (:results . "file replace") (:exports . "results") (:file . "/opt1/yuzhenrong/plantuml_config/example.png") (:tangle . "no") (:hlines . "no") (:noweb . "no") (:cache . "no") (:session . "none")) "" nil 3730 "(ref:%s)"))
  org-ctrl-c-ctrl-c(nil)
  funcall-interactively(org-ctrl-c-ctrl-c nil)
  call-interactively(org-ctrl-c-ctrl-c nil nil)
  command-execute(org-ctrl-c-ctrl-c)

我是ssh远程到ubuntu服务器上面编辑org文件的,服务器上面jar包,java环境,plantuml包以及graphviz包都是有的,init.el也是配置了的。

(unless (package-installed-p 'plantuml-mode)
  (package-install 'plantuml-mode))

;; 设置 PlantUML 的 JAR 路径
(setq plantuml-jar-path (expand-file-name "/opt1/yuzhenrong/plantuml_config/plantuml.jar"))

;; 使用 PlantUML 编写语言
(org-babel-do-load-languages
 'org-babel-load-languages
 '((plantuml . t)))

;; 设置 PlantUML 命令选项
(setq org-plantuml-jar-path plantuml-jar-path)
(setq plantuml-default-exec-mode 'jar)

可能是你最近升级 Emacs 之后 elc 文件有点问题。
建议你可以卸载重装 Emacs,并且重新安装所有插件。

1 个赞