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

sty*_*ner 7 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"
}
Run Code Online (Sandbox Code Playgroud)

我有如下脚本(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
Run Code Online (Sandbox Code Playgroud)

Java bin文件夹:

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin
Run Code Online (Sandbox Code Playgroud)

但是,当我构建一个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]
Run Code Online (Sandbox Code Playgroud)

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

这个问题的原因是什么?

Ale*_*lex 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
Run Code Online (Sandbox Code Playgroud)

然后使用编辑器修改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"
       }
   ]
}
Run Code Online (Sandbox Code Playgroud)

再次压缩Java.sublime-package中的内容并将其放回Package文件夹中:

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

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


ste*_*eel 9

轻松一步一步:

  1. 如果您还没有安装包控件

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

  3. 打开包控件,输入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
}
Run Code Online (Sandbox Code Playgroud)


Ben*_*enS 8

有许多解决方案,如果不提供一步一步说同样的事情.所以这是我在使用Sublime Text 3的Mac'16上的体验:

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

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

制作一个临时目录来搞乱.

$ mkdir java

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

$ 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"
}
Run Code Online (Sandbox Code Playgroud)

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

$ zip Java.sublime-package*

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

$ mv Java.sublime-package ../

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

$ cd ..

删除temp java目录:

$ rm -fr java /

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


Mat*_*DMo 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"
}
Run Code Online (Sandbox Code Playgroud)

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