Недопустимая ошибка флага при использовании bash для компиляции java

Я пытаюсь написать простой скрипт для компиляции моего java-кода. когда я положил

javac Main.java

в моем compile.sh и сделать

bash compile.sh

Я получаю error: invalid flag: Main.java

Однако, если я просто использую команду javac Main.java, все работает нормально.

Я использую Ubuntu VirtualBox на Win10. Как я могу заставить мой скрипт работать?

Вам нужно будет включить больше вашего скрипта. Проблема не в этой строке.

Kingsley 09.04.2019 01:42
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
1 317
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот проблема, которую вы видите:

$ cat compile.sh
javac Main.java

$ bash compile.sh
javac: invalid flag: Main.java
Usage: javac <options> <source files>
use -help for a list of possible options

Это происходит потому, что скрипт использует окончания строк в стиле DOS:

$ cat -v compile.sh
javac Main.java^M

Вы можете исправить это, настроив редактор для сохранения с разделителями строк Unix или, например, с помощью tr:

$ tr -d '\r' < compile.sh > fixed.sh
(no output)

$ cat -v fixed.sh
javac Main.java

Теперь он работает так, как ожидалось:

$ bash fixed.sh
(no output)

Большое спасибо! Я понятия не имею, что это за вещь. Я буду следить за этим в будущем.

Terence Lyu 09.04.2019 05:27

Другие вопросы по теме