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文件夹下
第二步 —— 必备文件之二: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的文件夹里面我们就可以找到JavaC.sublime-build文件了,我们用Sublime或者记事本打开,就可以看到里面的内容了:
现在,我们将一下代码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文件夹中的文件:
右击任意文件,左击“添加至压缩文件”,然后压缩格式选择.zip格式,否则后续步骤会报错**:
再将Java.sublime-package.zip放入Packages文件夹中,并将.zip后缀删去:
第三步 —— 打开Sublime T3检验
随便输入一个Java程序,然后按住Ctrl + B或者菜单栏中“工具”->“立即编译”:
问题的产生
对于Sublime运行不了Java的问题有很多种,除去Sublime本身编译系统的问题可以用runJava.bat的方法解决外,下面博主就根据自己亲身经历过的和搜索时别人遇到过的问题进行一个汇总。-
第一类 —— “Decode error”系列
看得懂英文的人都能知道这是解码的问题,问题的提示包括以下图中若干相同的类型:
这个编码的问题比较繁琐,但是简而言之就是修改文件中的编码,让我们回到最开始两个需要修改的文件代码中:
<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: 无源文件;
另一种是如图所示的问题:
其实这类问题的产生只能怪我们自己粗心了,这类问题的根本原因就是我们没有保存.java文件,如果你将你现在的.java文件Ctrl + S保存一下,你就会发现编译通过了。 -
第三类 —— “类#是公共的,应在名为#.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就可以了。说在最后
这里博主就帮大家解决问题到这里,后续如果你还有遇到什么问题,可以在下方评论中告诉博主,博主会后续更新,谢谢!