一直都用Sublime查看代码,最近想配置一下Sublime的Java运行环境。
期间遇到了下面几个粗心的问题,于是记录一下:
下面的配置文件都是基于
/Users/你的用户名/Library/Application Support/Sublime Text 3/Packages/User
也可以右上角
然后进入User文件夹,
创建
Java.sublime-build 配置文件
遇到的问题
1.[Finished in 0.4s] 没有打印结果
这个问题很明显是只编译了,没有去运行。
可能长得是这样的
{
//先执行javac 编译 ,再执行java 运行编译后的字节码文件
"cmd": ["javac \"$file_name\""],
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": "source.java",
"shell": true,
"encoding": "utf-8"
}
在cmd 那一行加上“&& java \"$file_base_name\" ”
即:
"cmd": ["javac \"$file_name\" && java \"$file_base_name\""],
2.错误: 找不到或无法加载主类 NumericStream
- 下面是我的配置
{
//先执行javac 编译 ,再执行java 运行编译后的字节码文件
"cmd": ["javac \"$file_name\" && java \"$file_base_name\""],
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": "source.java",
"shell": true,
"encoding": "utf-8"
}
这里的问题,虽然在当前.java文件目录下已经生成了.class文件,但是在改类中,有包的路径导致,例如我下面的代码:
package com.test.java8;
import java.util.stream.IntStream;
public class NumericStream {
public static void main(String[] args) {
System.out.println("=======================");
}
}
这里的package
package com.test.java8;
那么java 程序就会从当前目录往下com/test/java8 目录下面去找NumericStream 这个执行类去执行。所以,这个配置文件是不对的。
修改:
{
// -d 把生成的.class文件按照包的路径生成 后面 java 运行的时候也要按照包的路径来运行
// 类似 com.xxx.Test.$file_base_name 指的就是类名
"cmd": ["javac -d . \"$file_name\" && java \"com.test.java8.$file_base_name\""],
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": "source.java",
"shell": true,
"encoding": "utf-8"
}
当然,还有一个方法
直接把package那一行注释掉
//package com.test.java8;
PS:最后别忘记切换Build System
如果还有问题可以贴出来,一同解决。