- Linux start-up script for java application
- 6 Answers 6
- How to Run Jar File in Ubuntu Linux
- Run jar files in Ubuntu
- Method 1: Using GUI
- Method 2: Using the Terminal
- Here’s how to set up the JAVA_HOME variable
- 🐧 Как запустить JAR-файл на Linux
- Как установить JRE на все основные дистрибутивы Linux
- Запуск JAR-файла из командной строки
- Заключение
- Как запустить jar в Linux
- Как запустить jar Linux
- Выводы
Linux start-up script for java application
Can anyone let me know how to create script and implement this process automatically while we restart our computer? In windows we use services but how about linux? Can u provide to me the script and step to do that since i am really new in Linux. Linux : RHat, Ubuntu Thanks
6 Answers 6
I would start with this template for a startup script rename the SCRIPT_HOME to proper path and call this file without any extensions, then in SSH run this command.
Note the javaserver in the chkconfig is how you called the file below, (no extensions or it wont work).
#!/bin/bash # # javaserver: Startup script for Any Server Application. # # chkconfig: 35 80 05 # description: Startup script for Any Server Application. SCRIPT_HOME=/var/java_server; export SCRIPT_HOME start() < echo -n "Starting Java Server: " $SCRIPT_HOME/run.sh start sleep 2 echo "done" >stop() < echo -n "Stopping Java Server: " $SCRIPT_HOME/run.sh stop echo "done" ># See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: javaserver " exit esac
Now here is the script the run.sh (this can be used instead of the template but I find it easier to make the template script small and unchangeable link to my main script so I never have to touch it again.
The script below is one of a very few scripts I found that actually can restart a java program without turning off all the java programs you currently have running, this one only targets the program it opened in the first place so it will never make any mistakes, never had it fail on me, run on user root no problem.
Runs your program in the background forever too (no need to keep SSH opened).
#!/bin/bash # # chkconfig: 345 99 05 # description: Java deamon script # # A non-SUSE Linux start/stop script for Java daemons. # # Set this to your Java installation JAVA_HOME=/usr/bin/ scriptFile=$(readlink -fn $(type -p $0)) # the absolute, dereferenced path of this script file scriptDir=$(dirname $scriptFile) # absolute path of the script directory serviceNameLo="javaserver" # service name with the first letter in lowercase serviceName="JavaServer" # service name serviceUser="root" # OS user name for the service serviceGroup="root" # OS group name for the service applDir="/var/java_server" # home directory of the service application serviceUserHome="/home/$serviceUser" # home directory of the service user serviceLogFile="/var/log/$serviceNameLo.log" # log file for StdOut/StdErr maxShutdownTime=15 # maximum number of seconds to wait for the daemon to terminate normally pidFile="/var/run/$serviceNameLo.pid" # name of PID file (PID = process ID number) javaCommand="java" # name of the Java launcher without the path javaArgs="MyJavaAppClass" # arguments for Java launcher javaCommandLine="$JAVA_HOME$javaCommand $javaArgs" # command line to start the Java service application javaCommandLineKeyword="MyJavaAppClass" # a keyword that occurs on the commandline, used to detect an already running service process and to distinguish it from others # Makes the file $1 writable by the group $serviceGroup. function makeFileWritable < local filename="$1" touch $filename || return 1 chgrp $serviceGroup $filename || return 1 chmod g+w $filename || return 1 return 0; ># Returns 0 if the process with PID $1 is running. function checkProcessIsRunning < local pid="$1" if [ -z "$pid" -o "$pid" == " " ]; then return 1; fi if [ ! -e /proc/$pid ]; then return 1; fi return 0; ># Returns 0 if the process with PID $1 is our Java service process. function checkProcessIsOurService < local pid="$1" if [ "$(ps -p $pid --no-headers -o comm)" != "$javaCommand" ]; then return 1; fi grep -q --binary -F "$javaCommandLineKeyword" /proc/$pid/cmdline if [ $? -ne 0 ]; then return 1; fi return 0; ># Returns 0 when the service is running and sets the variable $pid to the PID. function getServicePID < if [ ! -f $pidFile ]; then return 1; fi pid="$(<$pidFile)" checkProcessIsRunning $pid || return 1 checkProcessIsOurService $pid || return 1 return 0; >function startServiceProcess < cd $applDir || return 1 rm -f $pidFile makeFileWritable $pidFile || return 1 makeFileWritable $serviceLogFile || return 1 cmd="nohup $javaCommandLine >>$serviceLogFile 2>&1 & echo \$! >$pidFile" # Don't forget to add -H so the HOME environment variable will be set correctly. #sudo -u $serviceUser -H $SHELL -c "$cmd" || return 1 su --session-command="$javaCommandLine >>$serviceLogFile 2>&1 & echo \$! >$pidFile" $serviceUser || return 1 sleep 0.1 pid="$( <$pidFile)" if checkProcessIsRunning $pid; then :; else echo -ne "\n$serviceName start failed, see logfile." return 1 fi return 0; >function stopServiceProcess < kill $pid || return 1 for ((i=0; ifunction startService < getServicePID if [ $? -eq 0 ]; then echo -n "$serviceName is already running"; RETVAL=0; return 0; fi echo -n "Starting $serviceName " startServiceProcess if [ $? -ne 0 ]; then RETVAL=1; echo "failed"; return 1; fi echo "started PID=$pid" RETVAL=0 return 0; >function stopService < getServicePID if [ $? -ne 0 ]; then echo -n "$serviceName is not running"; RETVAL=0; echo ""; return 0; fi echo -n "Stopping $serviceName " stopServiceProcess if [ $? -ne 0 ]; then RETVAL=1; echo "failed"; return 1; fi echo "stopped PID=$pid" RETVAL=0 return 0; >function checkServiceStatus < echo -n "Checking for $serviceName: " if getServicePID; then echo "running PID=$pid" RETVAL=0 else echo "stopped" RETVAL=3 fi return 0; >function main < RETVAL=0 case "$1" in start) # starts the Java program as a Linux service startService ;; stop) # stops the Java program service stopService ;; restart) # stops and restarts the service stopService && startService ;; status) # displays the service status checkServiceStatus ;; *) echo "Usage: $0 " exit 1 ;; esac exit $RETVAL > main $1
How to Run Jar File in Ubuntu Linux
Downloaded a JAR file and don’t know how to use it? Learn how to run JAR files in Ubuntu based Linux distributions.
If you install any package having the .jar extension and try to execute it, it may throw an error saying «The file is not marked as executable»: And in this tutorial, I will walk you through how you can install its prerequisites and run Jar files in Ubuntu and other Linux with multiple methods.
Run jar files in Ubuntu
If you don’t know, JAR stands for Java ARchive so you must have a working Java environment. If you have Java installed, you should be able to run it. Check if Java is installed with:
If you see an error instead of the version number, install Java runtime environment using the following command:
sudo apt install default-jre
So let’s start with the first one.
Method 1: Using GUI
The first step is to open the file manager from the system menu and navigate to the jar file which you want to run.
Then, right-click on the jar app and select Properties .
From there, select Permissions and enable Allow executing file as program :
That made the file executable.
But you have yet to select which app it should use to run the jar files.
To select an Application to start the jar files, again, click on the jar file and choose the second option Open with Other Application and choose the OpenJDK Java Runtime option:
Now, you can start the jar application like you do with any other files by pressing the Enter key.
In my case, it was an installer and it started as it should:
Method 2: Using the Terminal
If you believe in efficiency, I’m about to show you the terminal method will complete the task in only three commands.
First, open the terminal and navigate to the directory where the jar file is located using the cd command:
Once done, use the chmod command with the +x flag to make the file executable:
And finally, you can use the Java command with the -jar flag to run the jar file:
Here’s how to set up the JAVA_HOME variable
Most of the users set the JAVA_HOME variable incorrectly. So we thought, why not make a dedicated guide to get things done correctly?
I hope you will find this guide helpful.
🐧 Как запустить JAR-файл на Linux
JAR- это файлы, которые были спрограмированны и скомпилированы с использованием языка программирования Java.
Для того чтобы запустить эти файлы в системе Linux, необходимо сначала установить программное обеспечение Java Runtime Environment (JRE).
Это просто пакет программного обеспечения, который позволяет системе понимать файлы JAR и, следовательно, дает ей возможность открывать и запускать их.
Обычно пакет JRE не установлен в большинстве дистрибутивов Linux по умолчанию, поэтому мы должны сначала установить Java, а затем открыть файл(ы) JAR.
В этом руководстве мы покажем вам, как установить Java Runtime Environment на все основные дистрибутивы Linux.
Это позволит вам открывать JAR-файлы независимо от того, какой дистрибутив Linux вы используете.
Затем мы будем использовать установленное программное обеспечение для открытия файлов JAR в Linux как через командную строку, так и через графический интерфейс.
Как установить JRE на все основные дистрибутивы Linux
Первое, что нам нужно сделать, это установить Java Runtime Environment, чтобы мы могли открывать файлы JAR.
Вы можете использовать соответствующую команду ниже, чтобы установить Java JRE с помощью менеджера пакетов вашей системы.
Чтобы установить Java JRE на Ubuntu, Debian, Linux Mint, MX Linux и Kali Linux:
$ sudo apt update $ sudo apt install default-jre
Чтобы установить Java JRE на Fedora, CentOS, Alma Linux, RockyLinux и Red Hat:
$ sudo dnf install java-latest-openjdk
Чтобы установить Java JRE на Arch Linux и Manjaro:
Запуск JAR-файла из командной строки
Запуск JAR-файла из командной строки очень прост.
Мы можем использовать следующий синтаксис:
Если JAR-файл имеет компонент GUI, он будет запущен на вашем экране.
В противном случае текст будет выведен на терминал.
Заключение
В этом руководстве мы рассмотрели, как запустить JAR-файл в системе Linux.
Единственная хитрость здесь заключается в том, что сначала нам нужно установить среду выполнения Java, которая имеет различные инструкции в зависимости от используемого дистрибутива Linux.
После установки программы JRE мы можем запускать JAR-файлы как из командной строки, так и из графического интерфейса.
Как запустить jar в Linux
Java — это кроссплатформенный язык программирования, благодаря которому программы, написанные один раз, можно запускать в большинстве операционных систем: в Windows, Linux и даже MacOS. И всё это без каких-либо изменений.
Но программы, написанные на Java, распространяются в собственном формате .jar, и для их запуска необходимо специальное ПО — Java-машина. В этой небольшой статье мы рассмотрим, как запустить jar-файл в Linux.
Как запустить jar Linux
Как я уже сказал, для запуска jar-файлов нам необходимо, чтобы на компьютере была установлена Java-машина. Если вы не собираетесь ничего разрабатывать, вам будет достаточно Java Runtime Environment или JRE. Что касается версии, то, обычно, большинство программ работают с 7 или 8 версией. Если нужна только восьмая, то разработчики прямо об этом сообщают. Посмотреть версию Java и заодно убедиться, что она установлена в вашей системе, можно с помощью команды:
У меня установлена восьмая версия, с пакетом обновлений 171. Если вы получаете ошибку, что команда не найдена, то это значит, что вам нужно установить java. В Ubuntu OpenJDK JRE можно установить командой:
sudo apt install openjdk-8-jre
Если вы хотите скомпилировать пример из этой статьи, то вам понадобиться не JRE, а JDK, её можно установить командой:
sudo apt install openjdk-8-jdk-headless
Чтобы узнать, как установить Java в других дистрибутивах, смотрите статью по ссылке выше. Когда Java будет установлена, вы можете очень просто запустить любой jar-файл в Linux, передав путь к нему в качестве параметра Java-машине. Давайте для примера создадим небольшое приложение:
public class Main public static void main(String[] args) System.out.println(» Losst test app! «);
>
>
Затем скомпилируем наше приложение в jar-файл:
javac -d . Main.java
jar cvmf MANIFEST.MF main.jar Main.class
Теперь можно запустить наш jar-файл командой java с параметром -jar:
Таким образом вы можете запустить любой jar-файл, который собран для вашей версии Java. Но не очень удобно каждый раз открывать терминал и прописывать какую-либо команду. Хотелось бы запускать программу по щелчку мышки или как любую другую Linux-программу — по имени файла.
Если мы дадим программе право на выполнение:
И попытаемся её запустить, то получим ошибку:
Чтобы её исправить, нам понадобиться пакет jarwrapper:
sudo apt install jarwrapper
Теперь можно запускать java в Linux по щелчку мыши или просто командой.
Выводы
В этой небольшой статье мы рассмотрели, как запустить jar Linux с помощью java-машины, а также как упростить команду запуска. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.