寫了一個java小代碼,接受控制臺的輸入,實(shí)現(xiàn)輸入輸出的最簡單簡單交互。
但是實(shí)踐來很久仍然沒能通過SublimeText的編譯系統(tǒng)來直接調(diào)用終端來運(yùn)行這個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);
}
}
因?yàn)镾ublimeText的設(shè)計(jì)不能支持終端輸入,這點(diǎn)很重要。
可以參見這片文章,Terminal window inside Sublime Text 2
在網(wǎng)上找文章看如何修改javac.sublime-build編譯系統(tǒng)的配置文件來直接運(yùn)行java,并且可以在彈出的終端中接受用戶的輸入。結(jié)果發(fā)現(xiàn)國內(nèi)的文章都是轉(zhuǎn)來轉(zhuǎn)去,轉(zhuǎn)載的都是有錯誤的文章。
配置是這樣的
{
"shell_cmd": "javac -encoding utf-8 $file_name && java $file_base_name",
"file_regex": "^ *\\[javac\\] (.+):([0-9]+):() (.*)$",
"selector": "source.java",
"encoding": "utf-8"
}
文章還信誓旦旦地標(biāo)稱這個sublime-build可以在新窗口中打開終端接收輸入,轉(zhuǎn)載者也都是拿來主義,并沒有發(fā)現(xiàn)作者的紕漏。
問題的答案
下面是我在stackflowover上使用mac sublimetext3 java run
找到的答案:
- How to run Java using Sublime Text 3 on Mac OS
- Show Java build results in gnome-terminal with Sublime Text 3
- Sublime Text 2 build system to compile & run Java in a new Terminal/Command Prompt window?
- Terminal window inside Sublime Text 2
問題的解決方法
上面的答案比國內(nèi)的轉(zhuǎn)載要靠譜,仔細(xì)閱讀就會發(fā)現(xiàn)這個問題的玄機(jī)和解決的方法。
得益于Sublime的插件機(jī)制,可以通過以下的插件來實(shí)現(xiàn)。
Terminal 可以設(shè)置終端的類型和參數(shù)。Glue的官網(wǎng),支持通過命令面板、右鍵、快捷鍵方式喚出終端。
通過這個問題還意外找到了一個強(qiáng)大的運(yùn)行腳本的好插件SublimeREPL,但是它對java無效,這個項(xiàng)目的描述是這樣的
SublimeREPL - run an interpreter inside ST2 (Clojure, CoffeeScript, F#, Groovy, Haskell, Lua, MozRepl, NodeJS, Python, R, Ruby, Scala, shell or configure one yourself)
總結(jié)
使用SublimeText遇到要接受輸入的java小程序只能調(diào)用終端運(yùn)行,在終端中輸入。那么在Sublime里可以通過插件來喚出終端。同樣是問題的答案,quora上的答案就很簡單,像是沒有回答過一樣。stackoverflow上找答案才更靠譜,更專業(yè),更科學(xué)。
其實(shí)這個問題沒有必要折騰,開發(fā)java項(xiàng)目還是在IDE中最靠譜,Sublime雖然被稱為神器,但還是只適合一些簡單的小程序和閱讀代碼時的應(yīng)用場景。