创世神域

Nothing is impossible.

@Puteulanus4年前

08/16
02:15
学习心得

Sublime Text 3 在OS X下配置Java编译

Java安装什么的不说了,主要是Sublime Text默认的Java处理方式还真就是“编译”,会弄个class文件出来但没有去执行。

找了好多教程,基本都是写个脚本替换掉sublime-build里的javac,强迫症表示这样弄实在是不舒服。

其实在sublime-build里使用shell_cmd是可以使用&&作为分隔符的,直接改配置文件就能达到编译+运行的目的。

在【编译系统】那里选择【编译新系统】(汉化包不同可能文字不一样,反正知道是那个就行了)。

Sublime Text会自动新建一个编译配置文件,输入以下内容后保存。

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

然后再用Commond+B编译java文件的时候,就可以正确显示出输出了:

08F82335-44D8-4DAB-8F48-F8B8CB24C76D

我一般是拿Sublime Text编练习用的小程序,弄完有强迫症喜欢去删生成的class文件,于是干脆直接把删除class文件也写编译命令里:

"shell_cmd": "javac -encoding utf-8 $file_name && java $file_base_name && rm -rf $file_base_name.class"

每次运行清清爽爽干干净净。

注意,因为是用的java $file_base_name来执行class,要求java文件的文件名和类名必需一致,否则会因为找不到class而报错:

6387A015-E2F9-47E3-94CB-B7CB8AE5DD76

 

DB31D5FA-81A1-4AE8-9D81-9F495E9780B2

 

 

Sublime Text 3 在OS X下配置Java编译

  1. Pingback sublime text3 在osx下搭建c和java环境 | segment-解决方案

  2. Vincent
    UnknownUnknownUnknownUnknown

    {
    "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c",

    "variants":
    [
    {
    "name": "Run",
    "cmd": ["bash", "-c", "gcc ‘${file}’ -o ‘${file_path}/${file_base_name}’ && ‘${file_path}/${file_base_name}’"]
    }
    ]
    }
    请教下,对C语言编译运行后,会在源文件的目录中多处一个可执行文件。要运行,必须单独的点击。无法在sublimetext中直接编译运行。这是什么问题?

    回复
  3. zzz_he
    UnknownUnknownUnknownUnknown

    import java.io.*;
    import java.util.*;
    public class Main
    {
    public static void main(String[] args)
    {
    Scanner cin = new Scanner (System.in);
    int a,b;
    a=cin.nextInt();
    b=cin.nextInt();
    System.out.println(a+b);
    }
    }

    Mac上已经按照你说的配置好了Sublime Text 3,但只有纯输出的能运行,像上面的带输入的代码就无法运行,错误提示:
    Exception in thread “main” java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at Main.main(Main.java:9)

    请问该怎么办呢?

    回复