Форум русскоязычного сообщества Ubuntu


Автор Тема: скрипт для компиляции и запуска .java  (Прочитано 1262 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Jaorino

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
  • Всем JAVA :))
    • Просмотр профиля
Ubuntu 16/04 LTS
Как создавать скрипты я разобрался. Ставим галку на текстовом файле (например run.sh) что он запускаемый, в настройках наутилуса выставляем "запускать исполняемые файлы".
файл run.sh
Тело файла у меня такое:

#!/bin/bash
javac Hello.java
  (лежит в одной папке с скриптом, ясен пень)
java Hello        (в результате компила мы же получаем Hello.class, который в итоге и запускает эта команда)[/i]

пример моих батников с винды, открывалась консоль, получался выхлоп

cd source
javac -d ../classes Solution.java
cd ../classes
java Solution
pause


В общем нужно, чтобы программы javac и java не просто выполнялись, а был вывод в терминал результата выполнения программ, либо ошибки компиляции. А получается, они просто в тихую компилят и что то там выполняют :) (и ах да, суть в том, чтобы запускать с GUI(наутилус например), если запускать с консоли то конечно все гут)

ЗЫ я 4-ий день в Ubuntu, это уже моя третья ходка попытка спрыгнуть с окошек, не спугните :'(

#!/bin/bash
konsole -e javac Hello.java
konsole -e java Hello
так не прокатывает, не открывается терминал :(


Добавлено РЕШЕНИЕ upd

(скрипт должен находиться в одном каталоге с компилируемыми файлами)


Код: Bash
  1. #!/bin/bash
  2. gnome-terminal -x bash -c 'javac Hello.java && java Hello;read'

Данный код выполняет компиляцию исходника джавы и только после окончания компиляции начинает непосредственно запускать уже скомпиленный file.class. После выполнения терминал ждет нажатия клавиши (точнее ввода). В результате ошибки компиляции, выведется соответствующее сообщение компилятора непосредственно в gnome-terminal

Код: Bash
  1. #!/bin/bash
  2. gnome-terminal -x bash -c 'cd source &&
  3. javac -d ../classes Hello.java &&
  4. cd .. &&
  5. cd classes &&
  6. java Hello;read'
  7.  

Скрипт должен находиться в корне, вместе с папками source и classes. В папке source должен лежать исходник (в моем случае Hello.java). Скомпилированная версия (Hello.class) кладется в classes и запускается.
« Последнее редактирование: 20 Май 2016, 19:32:10 от Jaorino »
Хаос - это непонятый порядок

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4073
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: скрипт для компиляции и запуска .java
« Ответ #1 : 19 Май 2016, 23:28:33 »
Jaorino, как минимум на половину это похоже на требования к системе сборки(типа make).
#!/bin/bash
konsole -e javac Hello.java
konsole -e java Hello
так не прокатывает, не открывается терминал :(

Какое рабочее окружение? Если не KDE и konsole не установлен, то и не будет работать. Подставь свой эмулятор терминала.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3095
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: скрипт для компиляции и запуска .java
« Ответ #2 : 20 Май 2016, 00:18:36 »
Ubuntu 16/04 LTS
"запускать исполняемые файлы".
Это вы зря. По умолчанию показывается запрос:
Открыть в текстовом редакторе, выполнить, запустить в терминале
Ну и модифицируйте свой скрипт

Код: Bash
  1. #!/bin/bash
  2. javac Hello.java
  3. java Hello
  4. read -p "Press any key..."
  5.  
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн Jaorino

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
  • Всем JAVA :))
    • Просмотр профиля
Re: скрипт для компиляции и запуска .java
« Ответ #3 : 20 Май 2016, 00:30:41 »
Ubuntu 16/04 LTS
"запускать исполняемые файлы".
Это вы зря. По умолчанию показывается запрос:
Открыть в текстовом редакторе, выполнить, запустить в терминале
Ну и модифицируйте свой скрипт

Код: Bash
  1. #!/bin/bash
  2. javac Hello.java
  3. java Hello
  4. read -p "Press any key..."
  5.  

Во первых, по дефолту у меня открывался Gedit, а во вторых спасибо за команды, я знаю что они работают, создают файл .class. Вот только при таком раскладе мы не увидим ошибки компиляции (если они будут) и соответственно вообще результат выполнения программы (например строчку "by-by world")  , ибо терминал не будет запущен. Я хочу чтобы в gnome-terminal из скрипта передавалась команда javac или java с параметрами в виде имени компилируемого файла, т.е в моем случае это Hello.java И Hello. В итоге получаем скрипт, при запуске которого происходит компиляция файла Hello.java, процесс этот должен отображаться в терминале. После компиляции идет запуск скомпилированного файла, результат которого тоже должен быть виден в терминале. Весь вечер уже бьюсь с гуглом, но мы друг друга не понимаем. Такое ощущение что никто так не делал :)

Блин, вот почему это работает?

#!/bin/bash

gnome-terminal -e "man bash"

а это нет

#!/bin/bash

gnome-terminal -e "java Hello" 
:(

ок, появился хоть какой-то прогресс

#!/bin/bash
gnome-terminal --command="java Hello"

в этом случае запускается терминал и java/javac выполняет свою работу, однако окно терминало быстро открывается и сразу закрывается даже не успев хоть что-то отпечатать. Теперь как сделать так, чтобы не закрывалось?

AAAаа вымучал таки!

#!/bin/bash
gnome-terminal -x bash -c 'javac Hello.java && java Hello && read L'

Данный код выполняет компиляцию исходника джавы и только после окончания компиляции начинает непосредственно запускать уже скомпиленный file.class. После выполнения терминал ждет нажатия клавиши (точнее ввода). Конечно не без греха, например бока компиляции все равно не выводятся в терминал, но этим я уже займусь позже. Фух...

ирония в том, что этот ответ (точнее, похожий на него) был дан еще в лихой 2005 год. Все свежие гугло выдачи - не воркают.
« Последнее редактирование: 20 Май 2016, 02:14:20 от Jaorino »
Хаос - это непонятый порядок

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3095
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: скрипт для компиляции и запуска .java
« Ответ #4 : 25 Май 2016, 14:37:34 »
Ваша ошибка была в использовании && - выполнять следующую команду, если предыдущая выполнилась без ошибок

Код: Bash
  1. #!/bin/bash
  2. gnome-terminal -x bash -c 'cd source &&
  3. javac -d ../classes Hello.java &&
  4. java ../classes/Hello;read'
  5.  
« Последнее редактирование: 25 Май 2016, 14:41:58 от EvangelionDeath »
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

 

Страница сгенерирована за 0.083 секунд. Запросов: 25.