最近,我必须了解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文件夹。
这个问题的原因是什么?
答案 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)
轻松一步一步:
如果您尚未
使用Package Control,安装Package Resource Viewer
打开包控件,输入prv
并运行PackageResourceViewer: Open Resource
选择Java
选择JavaC.sublime-build
使用下面的代码块替换构建JSON定义
你已经完成了! ctrl+b
现在应该编译并运行您的Java文件。
构建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文件将被编译并自动运行。
答案 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运行命令,这将允许它获取其他环境变量。