当我打Mx并写'ensime'时,我得到一个错误
`flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'.
'let: Wrong type argument: arrayp, nil'
当我在_emacs中具有“ require ensime”时,它告诉了我更多信息:
Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
file-truename(nil)
(let ((java (file-truename (executable-find "javac")))) (warn "JDK_HOME and JAVA_HOME are not set, inferring from %s" java) (ensime--parent-dir (ensime--parent-dir java)))
(cond ((getenv "JDK_HOME")) ((getenv "JAVA_HOME")) ((file-exists-p "/usr/libexec/java_home") (s-chomp (shell-command-to-string "/usr/libexec/java_home"))) ((quote t) (let ((java (file-truename (executable-find "javac")))) (warn "JDK_HOME and JAVA_HOME are not set, inferring from %s" java) (ensime--parent-dir (ensime--parent-dir java)))))
eval((cond ((getenv "JDK_HOME")) ((getenv "JAVA_HOME")) ((file-exists-p "/usr/libexec/java_home") (s-chomp (shell-command-to-string "/usr/libexec/java_home"))) ((quote t) (let ((java (file-truename (executable-find "javac")))) (warn "JDK_HOME and JAVA_HOME are not set, inferring from %s" java) (ensime--parent-dir (ensime--parent-dir java))))))
custom-initialize-reset(ensime-default-java-home (cond ((getenv "JDK_HOME")) ((getenv "JAVA_HOME")) ((file-exists-p "/usr/libexec/java_home") (s-chomp (shell-command-to-string "/usr/libexec/java_home"))) ((quote t) (let ((java (file-truename (executable-find "javac")))) (warn "JDK_HOME and JAVA_HOME are not set, inferring from %s" java) (ensime--parent-dir (ensime--parent-dir java))))))
custom-declare-variable(ensime-default-java-home (cond ((getenv "JDK_HOME")) ((getenv "JAVA_HOME")) ((file-exists-p "/usr/libexec/java_home") (s-chomp (shell-command-to-string "/usr/libexec/java_home"))) ((quote t) (let ((java (file-truename (executable-find "javac")))) (warn "JDK_HOME and JAVA_HOME are not set, inferring from %s" java) (ensime--parent-dir (ensime--parent-dir java))))) "Location of the JDK's base directory" :type string :group ensime-server)
eval-buffer(#<buffer *load*-216581> nil "c:/Users/leokr_000/AppData/Roaming/.emacs.d/elpa/ensime-20141007.246/ensime-vars.el" nil t) ; Reading at buffer position 2344
load-with-code-conversion("c:/Users/leokr_000/AppData/Roaming/.emacs.d/elpa/ensime-20141007.246/ensime-vars.el" "c:/Users/leokr_000/AppData/Roaming/.emacs.d/elpa/ensime-20141007.246/ensime-vars.el" nil t)
require(ensime-vars)
eval-buffer(#<buffer *load*-524611> nil "c:/Users/leokr_000/AppData/Roaming/.emacs.d/elpa/ensime-20141007.246/ensime.el" nil t) ; Reading at buffer position 1766
load-with-code-conversion("c:/Users/leokr_000/AppData/Roaming/.emacs.d/elpa/ensime-20141007.246/ensime.el" "c:/Users/leokr_000/AppData/Roaming/.emacs.d/elpa/ensime-20141007.246/ensime.el" nil t)
require(ensime)
eval-buffer(#<buffer *load*> nil "c:/Users/leokr_000/AppData/Roaming/_emacs" nil t) ; Reading at buffer position 220
load-with-code-conversion("c:/Users/leokr_000/AppData/Roaming/_emacs" "c:/Users/leokr_000/AppData/Roaming/_emacs" t t)
load("~/_emacs" t t)
#[0 "\205\262
实际上,此“ _emacs”文件是从此处复制的https://github.com/ensime/ensime-server/wiki/Quick-Start-Guide我正在运行Windows 8和emacs 24.3。
显然,Emas找不到您的javac
可执行文件。确保您确实有某个地方javac
(或javac.exe
可能是针对您的平台的地方),并且该地方已在中列出exec-path
。详细说明:
Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
这表示代码试图将nil视为数组(字符串也是数组)。
file-truename(nil)
这表示它是在file-truename
使用arguments调用时发生的nil
,实际上,file-truename
它使用文件名(字符串)作为参数,因此nil
不是有效的参数。
(let ((java (file-truename (executable-find "javac"))))
这表示它是在评估该代码时发生的,我们看到arg tofile-truename
实际上是返回的值,(executable-find "javac")
并且该表达式应该返回的绝对文件名javac
(如所找到exec-path
),或者返回nil(如果找不到)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句