8

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

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

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

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

4

3 回答 3

9

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

  • 这只是一个起点。Full 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-build

{
  "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 开发。其他任何事情都是浪费我的时间,即使是简短的实验性东西。

于 2012-09-06T00:58:29.923 回答
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 上,可以在 Github 上的Java、sublime-build下载

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

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

于 2015-10-13T00:06:38.383 回答
0

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

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

如果你想传递参数,你需要使用包管理为 sublime text 安装 GLUE。

我不知道 linux 版本是否适用于安装 Cygwin 的 windows,但你可以试试。

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

于 2016-03-04T18:34:03.997 回答