Sublime Text 2构建系统,用于在新的终端/命令提示符窗口中编译和运行Java?

我想在Sublime Text 2中创建一个编译Java文件的构建系统,然后在新的终端(用于OS X或Linux)或命令提示符(用于Windows)窗口中运行它。

原因是因为Sublime Text 2不允许用户输入任何内容,因此任何需要输入的程序在Sublime Text 2中运行时都会发出错误,如下所示:

这是我目前拥有的(我也尝试过批处理文件),但它只是在Sublime Text 2中运行,而不是在新的shell中运行:

这可能吗? 如果是这样,请逐步解释(我是Sublime Text 2的菜鸟),该怎么做; 我已经尝试在Sublime Text 2论坛上发帖了,到目前为止还没有运气! 我无法形容地感激不尽。 谢谢你的时间!

这是我为完成这项工作所做的“礼貌”(阅读:简短易读)版本。

  • 这只是一个起点。 完全impl是博客文章,而不是答案。
  • 假设:OS X,xterm,没有包层次结构等。
  • 包裹/项目的东西相对简单,但IMO很尴尬。
  • 我没有一个完整的解决方案,即跨操作系统或考虑奇怪的目录。
  • 我的真实版本做了一些假设,可能会或可能不会对世界其他地方有用。
  • 我的真实版本使用Ant或Maven,它解决了许多问题,但不是全部。
  • 其中一些可以包含在sublime-build文件中,但是……
  • …对我而言,这种方式更容易,因为这里没有显示其他东西。

Nutshell (简化):编译并运行shell脚本以获得新窗口。

脚本

cd $1 /usr/bin/javac $2 /usr/X11/bin/xterm -e "/bin/bash -c \"/usr/bin/java $3; echo 'Press ENTER to quit...'; read line\"" 

JavaC.sublime建造

 { "cmd": ["~/bin/run-java.sh $file_path $file $file_base_name"], "file_regex": "^(...*?):([0-9]*):?([0-9]*)", "path": "/usr/bin/java", "selector": "source.java", "shell": true } 

在现实生活中,它有点复杂。

所有这些说,我从来没有真正做过任何与Java适当的控制台输入; 我通过Groovy或JRuby REPL,或允许存根输入/输出源/目的地,或者……但不是在Java中,而不是从Sublime Text 2 – 我使用IDE进行Java开发。 其他任何东西都浪费我的时间,即使是短期的实验性东西。

我没有必要使用所有这些长方法。 不适合大项目。 一个示例构建系统是

 { "cmd": ["javac '$realpath$file' && java $file_base_name && rm *.class"], "selector": "source.java", "shell": true, "variants": [ { "name": "JavaDoc", "cmd": ["mkdir documentation && javadoc -d documentation *.java"] }, { "name": "JAR", "cmd": ["javac '$realpath$file' && echo \"Main-Class: $file_base_name\" > Manifest.txt && jar cfm $file_base_name.jar Manifest.txt *.class && rm *.class && java -jar $file_base_name.jar"] }, ] } 

这适用于Linux,可以在Github上下载Java,sublime-build

有趣的是它还将文件编译为JAR。 编译后删除类以使事情更整洁,它也支持生成JavaDocs。

唯一的限制是它不能在编译时接受用户输入或参数。 您必须在终端中手动执行此操作。

这可能会对你有所帮助,但它目前仅适用于Linux,我仍在使用Windows版本。 我已经制作了一个bash脚本,用于在sublime text 2和3中运行java。这个脚本允许你使用包层次结构,但不是必需的。

它可以使用以下链接在github上下载: https : //github.com/dannyvantol/JPack

如果要传递参数,则需要使用package manage为sublime文本安装GLUE。

我不知道linux版本是否适用于安装了Cygwin的Windows,但是你可以尝试一下。

您需要知道如何使用它的所有信息也可以在github上找到。 我希望这对你有所帮助

Interesting Posts