Настройка Sublime Text для Java и получение «bash: javac: команда не найдена»

#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"
}