如何在Mac OS上使用Sublime Text 3运行Java

时间:2014-06-20 02:39:03

标签: java sublimetext3

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

我在包Java.sublime-package中修改了JavaC.sublime-build。

JavaC.sublime建造:

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

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

runJava.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文件夹。

这个问题的原因是什么?

6 个答案:

答案 0 :(得分:12)

那是因为你不应该直接用编辑器修改包文件。它们是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运行它

答案 1 :(得分:9)

轻松一步一步:

  1. 如果您尚未

  2. ,请安装Package Control
  3. 使用Package Control,安装Package Resource Viewer

  4. 打开包控件,输入prv并运行PackageResourceViewer: Open Resource

  5. 选择Java

  6. 选择JavaC.sublime-build

  7. 使用下面的代码块替换构建JSON定义

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

  9. 构建JSON定义:

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

答案 2 :(得分:7)

有许多解决方案,如果不提供一步一步说同样的话。所以这是我在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

然后我将以下内容复制到我在Sean Mullen发布的 JavaC.sublime-build 中:

{
    "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 ../

更新:4/18/18: 对不起,我花了很长时间来调整这个答案。基于@bumbu的注释,我们需要在删除临时目录之前执行以下命令:

  

$ cd ..

删除temp java 目录:

  

$ rm -fr java /

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

答案 3 :(得分:2)

我将我的修改为

运行你做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"
        }
    ]
}

答案 4 :(得分:1)

在Sublime Text 3中,您只需点击工具 - &gt;构建系统 - &gt;新建系统,然后从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

那就是它!点击工具 - &gt;再次构建系统,你会看到java_run,选择它然后尝试构建,java文件将被编译并自动运行。

enter image description here

答案 5 :(得分:0)

/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运行命令,这将允许它获取其他环境变量。