【问题标题】:How to run Java using Sublime Text 3 on Mac OS如何在 Mac OS 上使用 Sublime Text 3 运行 Java
【发布时间】:2014-08-10 17:33:57
【问题描述】:

最近了解了Sublime Text 3,并尝试在其中运行Java。

我已经修改了包中的JavaC.sublime-build,Java.sublime-package。

JavaC.sublime-build:

{
    "cmd": ["runJava.sh", "$file_base_name"],
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "selector": "source.java"
}

我有如下的shell脚本(runJava.sh),我把它放在Java bin文件夹中。

运行Java.sh:

[ -f "$1.class" ] && rm $1.class
for file in $1.java
do
echo "Compiling $file........"
javac $file
done
if [ -f "$1.class" ]
then
echo "-----------OUTPUT-----------"
java $1
else
echo " "
fi

Java bin 文件夹:

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin

但是,当我构建一个 java 文件时,我收到一条错误消息,说......

[Errno 2] No such file or directory: 'runJava.sh'
[cmd: ['runJava.sh', 'Test']]
[dir: /Users/xxxxxxx/Desktop]
[path: /usr/bin:/bin:/usr/sbin:/sbin]
[Finished]

我不知道为什么会出现此消息,因为 runJava.sh 位于正确的位置,即 Java bin 文件夹。

这个问题的原因是什么?

【问题讨论】:

    标签: java sublimetext3


    【解决方案1】:

    市面上有许多解决方案都在说同样的事情,但没有提供分步说明。以下是我在 Mac'16 上使用 Sublime Text 3 的体验:

    打开一个终端窗口并执行以下操作:

    $ cd /Applications/Sublime\Text.app/Contents/MacOS/Packages/

    制作了一个临时目录来搞乱。

    $ mkdir java

    将当前Java.sublime-package复制到新的java目录,cd复制到java

    $ cp Java.sublime-package java/

    $ cd java

    然后,解压包查看内容:

    $ unzip Java.sublime-package

    现在,编辑构建文件 JavaC.sublime-build。如果你有 sublime text 的命令行脚本:

    $ subl JavaC.sublime-build

    否则,

    $ vi JavaC.sublime-build

    然后我将以下内容复制到我的 JavaC.sublime-build 中,我在这里找到了 Sean Mullen:

    {
        "cmd": ["javac \"$file_name\" && java \"$file_base_name\""],
        "shell": true,
        "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
        "selector": "source.java"
    }
    

    之后,保存,在 java 目录中输入:

    $ zip Java.sublime-package *

    将新的构建包移动到必要的文件夹(父目录):

    $ mv Java.sublime-package ../

    更新:2018 年 4 月 18 日: 对不起,我花了这么长时间来调整这个答案。基于来自@bumbu 的 cmets,我们确实需要在删除临时目录之前执行以下命令:

    $ cd ..

    删除临时java目录:

    $ rm -fr java/

    然后完成。现在构建 Java 文件现在也将尝试运行它。我更喜欢这种行为,而不是必须做另一个“变体”来运行程序。

    【讨论】:

    • 在删除临时 java 文件夹之前,您必须执行 cd ..
    • 很好的答案,很有帮助。
    【解决方案2】:

    在 Sublime Text 3 中,您只需点击 tools -> Build System -> New Build System,然后从Sean Mullen 粘贴以下内容:

    {
    "cmd": ["javac \"$file_name\" && java \"$file_base_name\""],
    "shell": true,
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "selector": "source.java"
    }
    

    然后保存为java_run.sublime-build

    就是这样!当你再次点击tools -> Build System时,你会看到java_run,选择它然后尝试构建,java文件将被编译并自动运行。

    【讨论】:

      【解决方案3】:

      简单的一步一步:

      1. 如果你还没有安装Package Control

      2. 使用包控制,安装Package Resource Viewer

      3. 打开 Package Control,输入 prv 并运行 PackageResourceViewer: Open Resource

      4. 选择Java

      5. 选择JavaC.sublime-build

      6. 将构建 JSON 定义完全替换为以下代码块

      7. 你已经完成了! ctrl+b 现在应该编译并运行您的 Java 文件。

      构建 JSON 定义:

      {
        "cmd": ["javac \"$file_name\" && java \"$file_base_name\""],
        "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
        "selector": "source.java",
        "shell": true
      }
      

      【讨论】:

        【解决方案4】:

        我把我的改成这样

        运行你做 ctrl + shift + b

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

        【讨论】:

          【解决方案5】:

          这是因为您不应该直接使用编辑器修改包文件。它们是 zip 文件,尽管它们没有警告用户的扩展名。

          要修改插件,您必须转到 /Packages 并解压缩 Java.sublime-package 文件。我将使用 linux 语法,但过程保持不变:

          cd <sublime-text3-folder>/Packages
          mkdir java
          cp Java.sublime-packages java
          cd java
          unzip Java.sublime-packages
          

          然后使用编辑器修改 JavaC.sublime-build 以添加以下行(不要忘记最后一行后的额外逗号

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

          再次压缩 Java.sublime-package 中的内容并通过以下方式将其放回 Package 文件夹:

          zip Java.sublime-package * cp Java.sublime-package ..//包

          重新启动 sublime,现在与 Ctrl+B 一起构建您的项目,您将能够使用 Ctrl + Mayus + B 运行它

          【讨论】:

          • 我使用 Tools > Build System > New Build System > 创建了一个新的构建系统并将脚本粘贴到 untitled.sublime-build 中。然后将其保存为 java.sublime-build 并保存在 ./config/sublime-text-3/Packages/User 下。现在,它在 Tools > Build System 下显示为构建系统,Ctrl + B 编译,Ctrl + Shift + B 运行 java 程序。
          • 设置完成后,请确保按Ctrl + Shift + B 再次运行JavaC。然后,假设它成功构建,再次按下它,这次选择JavaC Run。从这里开始,只需按Ctrl + B 即可运行。
          • 谢谢。我更改了如下设置,以便我们能够构建和运行单一类型的 java 文件 (Command + B) { "cmd": ["java", "$file_base_name"], "file_regex": "^ * \\[javac\\] (.+):([0-9]+):() (.*)$", "selector": "source.java" }
          【解决方案6】:

          /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin 不在 Sublime 的路径中,如您的错误消息所示。有两种方法可以解决这个问题。第一种是将runJava.sh 移动到/usr/bin,或者在那里创建指向它的符号链接。第二个是像这样改变你的JavaC.sublime-build文件:

          {
              "cmd": ["runJava.sh", "$file_base_name"],
              "path": "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin:$PATH",
              "shell": true,
              "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
              "selector": "source.java"
          }
          

          这会在构建系统执行时将您的 Java bin 文件夹添加到 Sublime 的 PATH,以便它可以找到 runJava.sh。添加 "shell": true 通过 bash 运行命令,这将允许它获取您的其他环境变量。

          【讨论】:

          • 测试:/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/runJava.sh:权限被拒绝[在0.0秒内完成,退出代码为126] [cmd:[ 'runJava.sh', 'Test']] [目录:/Users/xxxxx/Desktop] [路径:/usr/bin:/bin:/usr/sbin:/sbin]
          • 感谢您的评论,但上面出现了另一个错误消息。权限被拒绝..我该怎么办?
          猜你喜欢
          • 2016-02-19
          • 2014-03-13
          • 2018-03-22
          • 2015-02-25
          • 2014-04-22
          • 2012-12-11
          • 2014-03-01
          相关资源
          最近更新 更多