#java #sublimetext3 #sublimetext
#java #sublimetext3 #sublimetext
Вопрос:
У меня возникли проблемы с настройкой Sublime Text для программирования на Java. При использовании системы сборки JavaC я получаю такую ошибку в терминале:
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]
Комментарии:
1. Привет, и добро пожаловать в StackOverflow! Кажется, у вас есть некоторые проблемы с
path
переменной. Вы убедились, что у вас действительно есть команды, присутствующие в вашей системе? Для этого вы можете использоватьwhich
(т.е.which javac
Покажет вам путь к местуjavac
установки), и если они найдены в системе, вы можете добавить каталоги, в которых они находятся, вpath
переменную. Например, я уверенbash
, что живет/bin
в. Кроме того, вы можете (и, вероятно, должны) также заменитьjavac
в первомshell_cmd
на/path/to/javac
, чтобы быть абсолютно уверенным.2. Да, сэр, я проверил команды, присутствующие в самой моей системе
3. пожалуйста, ознакомьтесь с ответом ниже……
Ответ №1:
Здесь многое идет не так, поэтому давайте разберем это поэтапно.
“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 Development Kit). Первый предназначен только для запуска приложений 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
in a sublime-build
file не выполняет то, что вы думаете. В частности, он сообщает Sublime полностью стереть содержимое вашей 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]
Это ОС сообщает вам, что Sublime пытался запустить bash
(оболочка по умолчанию), но ее не удалось найти. Он не может быть найден, потому path
что он был поврежден вашей сборкой ( path:
список собирается для диагностики отладки перед запуском сборки, поэтому он представляет то, что path
было до sublime-build
того, как файл нарушил его).
Также стоит отметить, что команда like javac Something.java
просто компилирует код Java, а затем останавливается; это почти наверняка не то, что вы хотите сделать. Вероятно, вы также хотите выполнить код.
Итак, после того, как вы убедитесь, что у вас действительно есть оба java
и javac
, вы сможете запустить и запустить такой sublime-build
файл:
{
"shell_cmd": "javac "$file_name" amp;amp; java "$file_base_name"",
"working_dir": "${project_path:${folder}}",
"selector": "source.java"
}
Это скомпилирует один файл Java, а затем, если он сработал, выполнит его. Обратите внимание, что, поскольку ваша другая сборка сломалась PATH
, вам необходимо перезапустить Sublime, прежде чем какая-либо сборка будет работать.
Это также не поможет вам работать с любой программой Java, которая сложнее, чем один файл. Java как язык плохо подходит для одноранговой компиляции и запуска файлов, потому class
что файлы должны находиться в соответствующем расположении, зависящем от пакета.
В какой-то момент вам нужно будет перейти на использование какого-либо внешнего инструмента сборки с поддержкой Java из Sublime, такого как Ant
или подобного.
Ответ №2:
Да, сэр, я проверил свои системные команды и получил следующий результат:
~$ which java
/usr/bin/java
~$ какой javac
/usr/bin/javac
Подробнее о моем пути в sublime text также выглядит так:
{
"shell_cmd": "java $file_name",
"working_dir": "${project_path:${folder}}",
"path": "/usr/bin/java"
}