MAC下SublimeText运行java代码,如何接受终端的输入

写了一个java小代码,接受控制台的输入,实现输入输出的最简单简单交互。
但是实践来很久仍然没能通过SublimeText的编译系统来直接调用终端来运行这个java小程序。
代码原文如下:

import java.util.*;

public class GetPrice {

public static void main(String[] args) {

    System.out.println("please input a number");

    Scanner input = new Scanner(System.in);

    double number1 = input.nextDouble();

    System.out.println("please input a number2");

    double number2 = input.nextDouble();

    double price = number1 * number2;

    System.out.println("The price of this product is " + price);
}
}

因为SublimeText的设计不能支持终端输入,这点很重要。
可以参见这片文章,Terminal window inside Sublime Text 2

在网上找文章看如何修改javac.sublime-build编译系统的配置文件来直接运行java,并且可以在弹出的终端中接受用户的输入。结果发现国内的文章都是转来转去,转载的都是有错误的文章。
配置是这样的

{
    "shell_cmd": "javac -encoding utf-8 $file_name && java $file_base_name",
    "file_regex": "^ *\\[javac\\] (.+):([0-9]+):() (.*)$",
    "selector": "source.java",
    "encoding": "utf-8"
}

文章还信誓旦旦地标称这个sublime-build可以在新窗口中打开终端接收输入,转载者也都是拿来主义,并没有发现作者的纰漏。

问题的答案

下面是我在stackflowover上使用mac sublimetext3 java run找到的答案:

  1. How to run Java using Sublime Text 3 on Mac OS
  2. Show Java build results in gnome-terminal with Sublime Text 3
  3. Sublime Text 2 build system to compile & run Java in a new Terminal/Command Prompt window?
  4. Terminal window inside Sublime Text 2

问题的解决方法

上面的答案比国内的转载要靠谱,仔细阅读就会发现这个问题的玄机和解决的方法。

得益于Sublime的插件机制,可以通过以下的插件来实现。

  • Glue
  • Terminal

Terminal 可以设置终端的类型和参数。Glue的官网,支持通过命令面板、右键、快捷键方式唤出终端。

通过这个问题还意外找到了一个强大的运行脚本的好插件SublimeREPL,但是它对java无效,这个项目的描述是这样的

SublimeREPL - run an interpreter inside ST2 (Clojure, CoffeeScript, F#, Groovy, Haskell, Lua, MozRepl, NodeJS, Python, R, Ruby, Scala, shell or configure one yourself)

总结

使用SublimeText遇到要接受输入的java小程序只能调用终端运行,在终端中输入。那么在Sublime里可以通过插件来唤出终端。同样是问题的答案,quora上的答案就很简单,像是没有回答过一样。stackoverflow上找答案才更靠谱,更专业,更科学。

其实这个问题没有必要折腾,开发java项目还是在IDE中最靠谱,Sublime虽然被称为神器,但还是只适合一些简单的小程序和阅读代码时的应用场景。

你可能感兴趣的:(MAC下SublimeText运行java代码,如何接受终端的输入)