文本设置sublime tesxt for java

v7pvogib  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(275)

朋友们好,当我使用javac构建系统时,我在为java编程设置高级文本时遇到了一些问题,然后我在终端中遇到了这样的错误

“bash: javac: command not found
[Finished in 0.1s with exit code 127]
[shell_cmd: javac “/home/vinays/Documents/HelloWorld.java”]
[dir: /home/vinays/Documents]
[path: /app/utils/bin:/app/sublime_merge/bin:/app/bin:/usr/bin]”

然后我给自己做了一个新的构建系统,像这样:

}
 shell_cmd”: “java $file_name”,
“working_dir”: “${project_path:${folder}}”,
“path”: “/usr/bin/java”
}

它又一次出错并显示:

/usr/bin/env: ‘bash’: No such file or directory
[Finished in 0.0s with exit code 127]
[shell_cmd: java HelloWorld.java]
[dir: /home/vinays/Documents]
[path: /app/utils/bin:/app/sublime_merge/bin:/app/bin:/usr/bin]

请调查一下,帮我解决这个问题。 enter code here

rbl8hiat

rbl8hiat1#

你这里出了很多问题,所以让我们分阶段来考虑。

“bash: javac: command not found
[Finished in 0.1s with exit code 127]
[shell_cmd: javac “/home/vinays/Documents/HelloWorld.java”]
[dir: /home/vinays/Documents]
[path: /app/utils/bin:/app/sublime_merge/bin:/app/bin:/usr/bin]”

这表明 sublime-build 您试图使用的文件(可能是sublime附带的文件)试图调用的文件 javac ,但在路上的任何地方都找不到。
您的回答中还包括以下内容:

~$ which java
/usr/bin/java

这表明 java 在道路上确实是可用的;这是用于执行java程序的命令。
既然你有 java 但似乎没有 javac ,我猜您安装的是jre(java运行时环境),而不是jdk(java开发工具包)。第一个仅用于运行java应用程序,而第二个实际上包含编译java代码所需的工具和附加文件。
因此,最好的办法是验证您是否安装了jdk(可能是通过执行 which javac 看看上面写了什么)。
除此之外,您还提供了 sublime-build 文件:

{
    "shell_cmd": "java $file_name",
    "working_dir": "${project_path:${folder}}",
    "path": "/usr/bin/java"
}

这是错误的,有几个原因。首先,它使用 java 而不是 javac ,所以即使它真的起作用了 java ,它会失败,因为 java 用于执行编译的 class 文件,而不是用于编译代码。
其次, path 在一个 sublime-build 文件并不像你想象的那样。具体来说,它告诉崇高完全删除您的文件的内容 PATH 然后用您提供的内容替换它。
这个 PATH 用于指定要在其中以交互方式运行程序的目录列表;在这里,您已经将其设置为 java 程序本身(即不是文件夹)。
有了这样的改变,任何东西都不能再运行了,因为 PATH 完全无效。因此你的错误是:

/usr/bin/env: ‘bash’: No such file or directory
[Finished in 0.0s with exit code 127]
[shell_cmd: java HelloWorld.java]
[dir: /home/vinays/Documents]
[path: /app/utils/bin:/app/sublime_merge/bin:/app/bin:/usr/bin]

这是操作系统告诉你,崇高试图运行 bash (默认shell),但找不到它。找不到因为 path 被你的身材破坏了 path: 列出的是在生成开始之前为调试诊断收集的,因此它表示 path 是在 sublime-build 文件)。
同样值得注意的是 javac Something.java 只是编译java代码,然后停止;这几乎肯定不是你想做的。您可能也想实际执行代码。
所以,在你确定你两个都有之后 java 以及 javac ,你应该能够让自己站起来,用 sublime-build 文件如下:

{
    "shell_cmd": "javac \"$file_name\" && java \"$file_base_name\"",
    "working_dir": "${project_path:${folder}}",
    "selector": "source.java"
}

这将编译单个java文件,然后,如果它起作用,执行它。注意,因为你的另一个版本破坏了 PATH ,您需要重新启动sublime,才能进行任何生成。
这也不能帮助您处理任何比单个文件更复杂的java程序。java作为一种语言,不适合于特别编译和运行文件,因为 class 文件需要位于适当的包特定位置。
在某个时候,您需要升级到使用sublime的一些支持java的外部构建工具,例如 Ant 或者类似的。

mxg2im7a

mxg2im7a2#

是的,长官,我已经验证了我的系统命令,我得到了以下结果:

~$ which java
/usr/bin/java

~$哪个javac/usr/bin/javac
我在《崇高的文本》中的更多经历也是这样的:

{
    "shell_cmd": "java $file_name",
    "working_dir": "${project_path:${folder}}",
    "path": "/usr/bin/java"
}

相关问题