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

时间:2012-09-05 23:18:55

标签: java terminal command-prompt sublimetext2 build-system

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

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

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

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

3 个答案:

答案 0 :(得分:9)

以下是我所做的“礼貌”(阅读:简短易读)版本。

  • 这只是一个起点。完全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开发。其他任何东西都浪费我的时间,即使对于简短的实验性东西也是如此。

答案 1 :(得分:1)

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

{
    "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,可以在Java,sublime-build

下载到Github上

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

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

答案 2 :(得分:0)

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

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

如果你想传递参数,你需要使用包管理来为崇高文本安装GLUE。

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

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