4

我做了一个项目并将类命名为与文件名相同。假设我保存了项目并想运行它。我如何通过emacs做到这一点?我也安装了jdk。

4

3 回答 3

3

我在尝试 Java 时留下了一些技巧。

这个适用于由单个文件组成的最简单的程序:

(defun java-eval-nofocus ()
  "run current program (that requires no input)"
  (interactive)
  (let* ((source (file-name-nondirectory buffer-file-name))
     (out    (file-name-sans-extension source))
     (class  (concat out ".class")))
    (save-buffer)
    (shell-command (format "rm -f %s && javac %s" class source))
    (if (file-exists-p class)
    (shell-command (format "java %s" out) "*scratch*")
      (progn
    (set (make-local-variable 'compile-command)
         (format "javac %s" source))
    (command-execute 'compile)))))

这是一个蚂蚁控制的项目:

(defun ant-compile ()
  "Traveling up the path, find build.xml file and run compile"
  (interactive)
  (save-buffer)
  (with-temp-buffer
    (while (and (not (file-exists-p "build.xml"))
        (not (equal "/" default-directory)))
      (cd ".."))
    (set (make-local-variable 'compile-command)
     "ant -emacs")
    (call-interactively 'compile)))

你可以在 JDEE 中找到一些等价的东西,我可以设置它(我不能)。

这是我拥有的键绑定:

(define-key java-mode-map [C-f5] 'java-eval-nofocus)
(define-key java-mode-map [f5] 'ant-compile)
于 2013-11-13T18:23:41.223 回答
1

您也许应该安装并测试它: http ://www.emacswiki.org/emacs/JavaDevelopmentEnvironment

于 2013-11-13T12:50:12.300 回答
1

您必须拥有一个具有某些功能的 emacs 版本才能启动单独的应用程序。从那里,您传递命令以启动 JVM(例如 java MyClass)

如果您正在开发 Web 应用程序,您的服务器可能能够在类发生变化时动态加载它们——这取决于许多因素。如果您在这种类型的环境下进行开发,那么您只需要编译 Java 代码即可将更改反映在服务器上(假设服务器进行动态类加载并且它适用于您的开发环境——我已经在许多项目没有)。

于 2013-11-13T12:54:14.280 回答