KFH.006 - 如何在Sublime Text 3下运行Java?


Bruce_Zhu 于 2016.11.2
自主原创


如何在Sublime Text 3下运行Java?

----------注:此blog所涉解决方法仅适用于Windows下Sublime Text 3所产生的问题

  • 说在最前
    博主在使用Sublime T3学习Web前端之后,感觉到了Sublime的强大,于是想抛弃硕大繁琐的MyEclipse来捡回以前学习的Java用来Android开发,但是我发现利用Sublime本身自带的Javac编译系统并不能有效地运行.java的文件,那么博主就开始找各种方法解决。费经周折,博主终于解决了这一个扰人的问题。那么首先,我们先来一次Sublime T3需要运行Java的正确的配置方法吧!

  • Sublime Text 3下Java运行环境配置
    第一步 —— 必备文件之一:runJava.bat
    首先,我们新建一个空白文本文档,Ctrl + C以下代码:
    <pre>
    @ECHO OFF
    cd %~dp1
    ECHO Compiling %~nx1.......
    IF EXIST %~n1.class (
    DEL %~n1.class
    )
    javac -encoding UTF-8 %~nx1
    IF EXIST %~n1.class (
    ECHO -----------OUTPUT-----------
    java %~n1
    )
    </pre>
    将以上代码Ctrl + V后,再将文本文档名“新建文本文档.txt”更名为“runJava.bat”,然后放入你自己电脑的JDK文件中的bin文件夹下。
    如何看自己电脑的JDK目录?
    --- a.右击"我的电脑",打开“属性”,点击里面的“高级系统设置”

    我的电脑“属性”

    --- b.在“高级系统设置”里面打开“高级”目录下的“环境变量”
    高级系统设置

    --- c.在下方“系统变量”里找到“JAVA_HOME”,双击打开即可看到路径
    环境变量

    注:如果你安装的是JRE的话,同样适用,只是JRE是Java的运行环境,而JDK是Java的开发环境,JDK向下包含JRE
    在知道了自己JDK路径之后,将runJava.bat放入到JDK路径的bin文件夹下
    bin文件夹

    第二步 —— 必备文件之二:JavaC.sublime-build
    JavaC.sublime-build这个文件是在Sublime T3安装目录下的,但是你会发现你并不能搜索到它,因为JavaC.sublime-build被包含在了:
    (你电脑上Sublime T3的安装目录)\Packages\Java.sublime-package中
    Java.sublime-package其实是一个.zip格式的压缩包,你把它更名为Java.sublime-package.zip就可以解压看到里面的JavaC.sublime-build文件了。注意!更名时千万不要把后缀改成.rar或者其他压缩格式后缀,否则会出错!
    更改了后缀以后把它移出来,放在主路径,然后解压缩:
    Java.sublime-package

    在Java.sublime-package的文件夹里面我们就可以找到JavaC.sublime-build文件了,我们用Sublime或者记事本打开,就可以看到里面的内容了:
    JavaC.sublime-build源文件

    现在,我们将一下代码Ctrl + C一下,或者局部更改:
    <pre>
    {
    "shell_cmd": "runJava.bat "$file"",
    "file_regex": "^(...?):([0-9]):?([0-9])",
    "selector": "source.java",
    "encoding": "GBK"
    }
    </pre>
    更改后Ctrl + S保存,然后全选中Java.sublime-package文件夹中的文件:
    Java.sublime-package文件夹

    右击任意文件,左击“添加至压缩文件”,然后
    压缩格式选择.zip格式,否则后续步骤会报错**:
    压缩格式

    再将Java.sublime-package.zip放入Packages文件夹中,并将.zip后缀删去:
    删去.zip后缀

    点击“是(Y)”

    第三步 —— 打开Sublime T3检验
    随便输入一个Java程序,然后按住Ctrl + B或者菜单栏中“工具”->“立即编译”:
    Java程序测试

  • 问题的产生
    对于Sublime运行不了Java的问题有很多种,除去Sublime本身编译系统的问题可以用runJava.bat的方法解决外,下面博主就根据自己亲身经历过的和搜索时别人遇到过的问题进行一个汇总。

  • 第一类 —— “Decode error”系列
    看得懂英文的人都能知道这是解码的问题,问题的提示包括以下图中若干相同的类型:

    Decode error - output not utf-8

    Decode error - output not GBK

    这个编码的问题比较繁琐,但是简而言之就是修改文件中的编码,让我们回到最开始两个需要修改的文件代码中:
    <pre>
    @ECHO OFF
    cd %~dp1
    ECHO Compiling %~nx1.......
    IF EXIST %~n1.class (
    DEL %~n1.class
    )
    javac -encoding UTF-8 %~nx1
    IF EXIST %~n1.class (
    ECHO -----------OUTPUT-----------
    java %~n1
    )
    </pre>
    runJava.bat文件中的代码 ↑
    <pre>
    {
    "shell_cmd": "runJava.bat "$file"",
    "file_regex": "^(...?):([0-9]):?([0-9]*)",
    "selector": "source.java",
    "encoding": "GBK"
    }
    </pre>
    JavaC.sublime-build文件中的代码 ↑
    这两个文件中都有可以更改码制的地方:
    runJava.bat文件中的第7行
    <pre>
    javac -encoding UTF-8 %~nx1
    </pre>
    这里的码制“-encoding UTF-8”是编码制式,这里通过UTF-8码制来编码
    JavaC.sublime-build文件中的第5行
    <pre>
    "encoding": "GBK"
    </pre>
    这里的码制“ 'encoding': 'GBK' ”也是编码制式,这里通过GBK码制来编码
    那么如果遇到的是“Decode error”的问题,就要从编码解码的方式入手
    我们可以修改这两处的编码制式来检测(博主能力有限,不知道编码制式该如何查看),一般常用的中文简体编码制式有:“GBK”、“UTF-8”、“cp936”等。
    其实最简单的方法,就是可以试一试博主所设置的编码制式毕竟博主的Sublime T3是可以运行的,并没有出现编码的错误。
    如果编码问题还是得不到解决,那么请找找神奇的度娘吧!

  • 第二类 —— “javac: 无源文件”系列问题
    此类问题大致包含两种,一种是编译器提示:javac: 无源文件;

    javac:无源文件

    另一种是如图所示的问题:
    javac <options> <source files>

    其实这类问题的产生只能怪我们自己粗心了,这类问题的根本原因就是我们没有保存.java文件,如果你将你现在的.java文件Ctrl + S保存一下,你就会发现编译通过了。

  • 第三类 —— “类#是公共的,应在名为#.java的文件中声明”问题
    问题的产生如图所示:

    类#是公共的,应在名为#.java的文件中声明

    编译器提示“类#是公共的,应在名为#.java的文件中声明”,这其实就是说明我们在定义一个公共类名的时候,需要与我们保存的.java文件名保持相同,如图中我的.java名为NewTest1.java,然而我定义的公共类名为Hello,所以才会产生这一个的问题。
    其实这一点怪博主的粗心,刚用Sublime编译Java程序的时候,我们可能不会意识到这一点,因为在MyEclipse里直接一串命名下来不会觉得有什么不对,然而当用Sublime要自主命名时可能会一时间没反应过来,在这里专门提醒一下大家。

  • 第四类 —— “找不到或无法加载主类#”
    这一类的问题产生多是因为Java的环境变量未能配置好,这里引入别人的经验给大家:http://blog.csdn.net/wangjiaweiwei/article/details/42212525
    博主遇到这类问题的时候,是因为刚刚配置完Sublime Text 2的Java环境后未进行Sublime的重启,所以重启一下Sublime就可以了。

  • 说在最后
    这里博主就帮大家解决问题到这里,后续如果你还有遇到什么问题,可以在下方评论中告诉博主,博主会后续更新,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容