Ваша реклама могла б бути тут!
1 млн переглядів на місяць!
Google Page Rank: 5

Java+Linux+shell

🟡 00:23 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
Статус: Offline
Реєстрація: 20.03.2010
Повідом.: 144
  • 🟡 00:23 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #1
Проблема такая
Написал прогу на Java имею jar файл
в Windows создаю bat
в текстовом документе написал start javaw -jar rabota1.2\dist\rabota1.2.jar
и сохранил файл с раcширением bat
запускаю bat и прога моя запускается

Как такое сделать в Linux
Пробовал так в текстовом редакторе пишу
#!/bin/sh

JAVA_HOME=/home/linux1117/jdk1.6.0_21
WORK_DIRECTORY=/rabota1.2/dist
JAR_FILE=$WORK_DIRECTORY/rabota1.2.jar
cd $WORK_DIRECTORY
cmd="nohup $JAVA_HOME/bin/java -jar $JAR_FILE com.my.dist"

и сохранил файл с раcширением sh

Если не так подскажите как правильно пока ниче не получается
Зачем это все надо что б пользователю не заходить в командную строку и ручками писать.Нужен типа EXE или подобное может что то посоветуете.
P.S.:Пойду гуглить дальше :)
 
  • 🟡 00:23 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #2
Могу ошибаться, но че-то меня терзают смутные сомнения по поводу необходимости вот такой строчки в шелл скрипте:

Код:
export JAVA_HOME

поскольку в bash, в отличие от виндового cmd.exe, переменные в скрипте являются по умолчанию локальными, и запущенный процесс java без вышеупомянутой строчки переменную JAVA_HOME попросту не увидит.

А еще удобнее, наверное, будет прописать установку значения JAVA_HOME в startup скрипте, чтобы не заморачиваться с ней каждый раз:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
 
  • 🟡 00:23 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #3
cmd="nohup $JAVA_HOME/bin/java -jar $JAR_FILE com.my.dist"

Проблема в этой строчке - com.my.dist - это должно быть полное название класса, в котором есть функция main. Или укажите правильно название класса типа com.my.dist.Main, или уберите его, если в манифесте jar указан main-класс(а он есть судя по батнику).

Так же не забудьте дать права на выполнение скрипта пользователю.

Удачи.
 
  • 🟡 00:23 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #4
Могу ошибаться, но че-то меня терзают смутные сомнения по поводу необходимости вот такой строчки в шелл скрипте:

Код:
export JAVA_HOME

поскольку в bash, в отличие от виндового cmd.exe, переменные в скрипте являются по умолчанию локальными, и запущенный процесс java без вышеупомянутой строчки переменную JAVA_HOME попросту не увидит.
А вот с этим не согласен. Без export будет работать.
 
  • 🟡 00:23 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #5
А вот с этим не согласен. Без export будет работать.

Если можно уточнить - имеется в виду, все процессы, запущенные из этого скрипта, будут "видеть" переменную и без export? А export нужен, чтобы переменная и ее значение остались "жить" после завершения скрипта?
 
  • 🟡 00:23 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #6
Если можно уточнить - имеется в виду, все процессы, запущенные из этого скрипта, будут "видеть" переменную и без export? А export нужен, чтобы переменная и ее значение остались "жить" после завершения скрипта?

Да, в данном случае для запуска процесса достаточно обычной локальной переменной, export добавит ее в окружение шела.

Полезно так же добавлять переменный окружения в стартап.
Для этого в файл
~/.bash_profile

нужно добавить

export JAVA_HOME=<путь к установленной java>
export PATH=$PATH:<путь к установленной java>/bin

Для чего тогда устанавливать переменную в скрипте? Очень часто на серверах стоит несколько jdk или jre и для запуска приложений под разными версиями.
 
  • 🟡 00:23 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #7
Если можно уточнить - имеется в виду, все процессы, запущенные из этого скрипта, будут "видеть" переменную и без export? А export нужен, чтобы переменная и ее значение остались "жить" после завершения скрипта?
Нет. Если ты напишешь скрипт, который будет экспортировать переменную VAR, то её значение после завершения скрипта не будет передано в вызывающий шелл.
Для такой цели нужно вызвать скрипт через команду source или просто точка.

т.е
Код:
.   myscrpipt.sh
 
  • 🟡 00:23 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #8
JAVA_HOME=/home/linux1117/jdk1.6.0_21

зачем? почему бы не воспользоваться системной жавой?

JAR_FILE=$WORK_DIRECTORY/rabota1.2.jar

это необязательно, интерпретатор может взять из текущей директории

cmd="nohup $JAVA_HOME/bin/java -jar $JAR_FILE com.my.dist"

эта строка создает переменную cmd и записывает туда строку с подстановкой всех переменных. но где же запуск? нужно заменить на
Код:
nohup $JAVA_HOME/bin/java -jar $JAR_FILE com.my.dist

и сохранил файл с раcширением sh

расширение может быть любым или вообще его не быть, но без разрешения на исполнение из командной строки напрямую оно исполняться не будет (только sh <имя файла>).

P.S. можно попробовать применить высший пилотаж и воспользоваться binfmt, т.е. если настроено определение жавы, то достаточно дать права на исполнение jar-файлу. но это не всегда сделано.
 
  • 🟡 00:23 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #9
Удивительные модераторы удаляют тему "Требуется преподаватель JAVA" из раздела программирование. Интересно куда ее еще можно кинтуь?????)))
Может тут кто поможет с преподавателем???
 
Назад
Зверху Знизу