Компиляция и запуск Java с использованием notepad++ и nppexec
Пожалуйста, имейте в виду, что компиляция в оболочке Windows работает, поэтому существует небольшая (если не нулевая) вероятность того, что эта проблема является проблемой PATH.
Я потратил много времени на изучение того, как это сделать, и все результаты, которые я нашел в Интернете, говорят о том, что вы можете сделать:
NPP_SAVE
javac $(FILE_NAME)
java $(NAME_PART)
но это не работает для меня. В консоли NPP_EXEC я могу набрать java, и я получаю нормальные результаты, как и в cmd, но каждый раз, когда я набираю javac, я получаю ошибку с кодом ошибки 2:
================ READY ================
javac
javac
CreateProcess() failed with error code 2:
The system cannot find the file specified.
================ READY ================
редактировать
Я должен уточнить некоторую путаницу:
- Это решение должно выполняться в одном скрипте. Цель состоит в том, чтобы иметь возможность изменить код, нажать комбинацию горячих клавиш (например, F5 в Visual Studio), и она собирается, компилируется и запускается.
- На самом деле проблема, iirc, заключалась в том, что notepad++ по какой-то причине не распознает javac.
Извините за путаницу...
5 ответов
Наконец, после 5+ часов поиска и проб и ошибок, у меня есть работающий скрипт NPP Exec, который скомпилирует и запустит Java-программу, не покидая notepad++.
NPP_SAVE
cmd /K (javac "$(FULL_CURRENT_PATH)" && exit) || exit
cmd /K (cd /D "$(CURRENT_DIRECTORY)" && java $(NAME_PART) && exit) || exit
Осталось только найти способ сделать это без необходимости вызывать и отправлять параметры в cmd, все в notepad ++ и nppexec.
Как отмечено в комментарии ниже, если вы используете пакет, вам нужно будет соответственно отредактировать вторую строку. Если имя вашего пакета совпадает с именем вашего файла, должно работать следующее:
cmd / K (cd / D "$ (CURRENT_DIRECTORY)" && java -cp.. $ (NAME_PART). $ (NAME_PART) && exit) || выход
Мое решение адаптировано из файлов справки npp_exec (Плагины>Npp_Exec> Справка / Руководства> Раздел 4.7.2). Это не работает для меня и предполагает, что ваш путь к корзине JDK был добавлен в системную (или пользовательскую) переменную среды Windows "Путь".
NPP_SAVE
cd $(CURRENT_DIRECTORY)
javac $(FILE_NAME)
java $(NAME_PART)
Я установил это очень легко, используя эту статью, или вы также можете увидеть другое сообщение в блоге, которое очень просто и полезно.
Теперь перейдем к вопросу о том, как мы можем установить N++ и NppExec, чтобы наша программа работала с одной стороны на N++.
Сначала сохраните этот скрипт под именем Java Compile
NPP_SAVE
cd "$(CURRENT_DIRECTORY)"
"C:\Program Files (x86)\Java\jdk1.7.0\bin\javac" $(FILE_NAME)
здесь главное ваш путь к компилятору Java, как в моем случае это в C
каталог и, скорее всего, в той же вашей, но все же разница между 32-битной и 64-битной ОС.
Теперь сохраните этот скрипт под другим именем, например, Compile and Run.
cd "$(CURRENT_DIRECTORY)"
"C:\Program Files (x86)\Java\jdk1.7.0\bin\java" -classpath "$(CURRENT_DIRECTORY)" "$(NAME_PART)"
Теперь добавьте скрипт в макрос в N++, чтобы он работал оттуда,
зайдите в Дополнительные параметры в плагине NppExec,
A: Установите флажок вверху с надписью "Поместить в подменю макросов"
B: выберите скрипт из поля со списком "Ассоциированный скрипт". Он автоматически заполнит "Имя элемента"
C: Теперь нажмите кнопку "Добавить / Изменить".
D: Нажмите ОК. Это выйдет из поля Advanced Options и скажет, что NotePad++ необходимо перезапустить (не перезапускайте его, пока не будут добавлены другие скрипты).
Мы должны нажать OK, потому что это самый простой способ снять флажки, чтобы добавить следующий скрипт, иначе он может перезаписать существующую опцию меню.
E: Повторите эти шаги, чтобы добавить другие сценарии, а затем перезапустите его.
Это сделано сейчас.
Этот скрипт на NppExec работал в моем случае. Убедитесь, что ваш путь соответствует версии Java, установленной на вашем компьютере.
NPP_SAVE
cd $(CURRENT_DIRECTORY)
C:\ProgramFiles\Java\jdk1.8.0_66\bin\javac $(FILE_NAME)
C:\ProgramFiles\Java\jdk1.8.0_66\bin\java $(NAME_PART)
Ваша команда origin должна работать, если вы правильно установили PATH, единственное, что вам нужно сделать, это выбрать опцию NppExec-Follow $(CURRENT_DIRECTORY), чтобы npp мог распознать ваш файл.java.
Или вы можете также изменить $(FILE_NAME) на $(FULL_CURRENT_PATH) и изменить java $(NAME_PART) на:
CD $(CURRENT_DIRECTORY)
Java "$(NAME_PART)"