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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

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

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) [Выделить]
#!/bin/bash
gnome-terminal -x bash -c 'javac Hello.java && java Hello;read'

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

Код: (bash) [Выделить]
#!/bin/bash
gnome-terminal -x bash -c 'cd source &&
javac -d ../classes Hello.java &&
cd .. &&
cd classes &&
java Hello;read'

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

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • 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

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

Код: (bash) [Выделить]
#!/bin/bash
javac Hello.java
java Hello
read -p "Press any key..."
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн Jaorino

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

Код: (bash) [Выделить]
#!/bin/bash
javac Hello.java
java Hello
read -p "Press any key..."

Во первых, по дефолту у меня открывался 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

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

Код: (bash) [Выделить]
#!/bin/bash
gnome-terminal -x bash -c 'cd source &&
javac -d ../classes Hello.java &&
java ../classes/Hello;read'
« Последнее редактирование: 25 Мая 2016, 14:41:58 от EvangelionDeath »
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

 

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