专栏首页wOw的Android小站[Sublime-Text] Linux下用Sublime-Text3编译输出Java文件

[Sublime-Text] Linux下用Sublime-Text3编译输出Java文件

因为现在在借着经典的书籍巩固一些基础知识,所以会经常跑一些简单的程序,可又不想开庞大的IDE。所以就想试着用Sublime-Text来编译程序,哦,当然如果习惯的话,用 terminal 也可以。其实Sublime-Text里有编译功能,ctrl+B 即可,但编译后只是生成了 .class 文件,并没有执行,也就看不到结果。针对这一情况,需要一些配置文件的修改。我在网上查了一些方法,发现没有能用的,自己大概摸索了一下,找到了一个解决方法。当然,这个方法是以对付 JAVA 来做的,当然稍做修改也可以用来对付其他的语言。下面讲讲我理解的原理。

在 Sublime-Text 的文件夹下有一个 Packages 文件夹,里面有很多针对各种语言的工具包。对付 JAVA 就需要打开 Java.sublime-package 。不用解压,直接打开文件 JavaC.sublime-build 。ctrl + B 编译就是通过这个文件执行的,可以看到内容是:

{
	"shell_cmd": "javac \"$file\"",
	"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
	"selector": "source.java"
}

难怪,编译的时候只执行了 javac ,所以只是生成 .class 文件。那我们现在需要执行文件得到结果,就需要从这一行命令入手。

打开 jdk 目录下的 /bin 。对,就是 javac 所在的目录,在里面我们新建一个脚本 runJava.sh :

 #!/bin/bash
[ -f "$1.class" ] && rm $1.class
for file in $1
do
  echo "-Compiling $file.java ..."
  javac $file.java
done


if [ -f "$1.class" ]
then
  echo "------Output------"
  java $1
else
  echo " "
fi

记得 chmod 777 ( 自己的环境权限设成 777 无所谓,不行就 755 ,反正必须可执行)

脚本的意思是 有一个文件 test.java ,获取其文件名 test 做参数, test.class 存在就将其删掉重新编译,编译成功就执行。(注意不要乱删空格)

然后注销计算机,重新登录,在终端输入 runJava.sh 命令是否存在( 其实只要系统能找到这个文件放哪都行,放 jdk 只是因为 jdk 安装后都会配置其环境,比较省事儿)

之后就修改 JavaC.sublime-build 文件,将第一行改成:

"shell_cmd": "runJava.sh \"$file_base_name\"",

把 javac 换成新加的命令,后面文件名, $file 代表 test.java,$file_base_name 代表 test,明显,我们的命令需要后者为输入。

修改后保存,重启 Sublime-Text ,让其重新加载修改后的工具包。打开文件, ctrl + B 即可看到输出。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [Tensorflow] Tensorflow卷积理解

    CNN对于学习深度学习的人来说应该是比较耳熟的名词了.但很多人只是听过,但不知道是什么.

    wOw
  • [深度学习]Charpter 9:卷积网络

    卷积网络convolutional network,也叫做卷积神经网络convolutional neural network CNN 专门用来处理类似网格结构...

    wOw
  • [Android][Framework]带有so的三方应用集成

    集成带有So文件的三方应用时,如果不处理so文件,会导致应用打不开的情况,所以针对这些so文件需要做一些额外的处理。

    wOw
  • 带妹玩转vulnhub(七)

    https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion...

    用户5878089
  • java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别

      以前一直没有注意过这个问题,前两天机缘巧合上网查了一下,然后自己测试验证了一下。虽然网上说法很多,但是关于NoClassDefFoundError并没有给...

    用户1154259
  • java.base.jmod

    /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/jmods$ jmod list java....

    一个会写诗的程序员
  • 理解ClassNotFoundException与NoClassDefFoundError的区别

    但是你知道他们的区别吗?以及什么情况下发生上面的异常? 如果你还不清楚,那么不着急,我们来仔细分析一下:

    我是攻城师
  • JAVA-基础语法以及String的介绍

    J2SE:Java 2 Platform Standard Edition(2005年之后更名为JAVA SE)。

    张诺谦
  • Java内部类是如何实现的

    本代码主要想说明的是作为内部类的TimePrinter可以直接访问外部类TalkingClock的私有成员变量beep。

    Ryan-Miao
  • 【选择题】Java基础测试三(15道)

    【选择题】Java基础测试三(15道) 26.关于以下程序代码的说明正确的是( D ) 1.class HasStatic{ 2. privat...

    Java帮帮

扫码关注云+社区

领取腾讯云代金券