Heim Java javaLernprogramm Das Shell-Skript implementiert die Methode zum Ausführen des Java-Programms jar

Das Shell-Skript implementiert die Methode zum Ausführen des Java-Programms jar

Oct 19, 2017 am 09:30 AM
java shell 运行

In diesem Artikel wird hauptsächlich die Methode zum Ausführen von Java-Programm-JAR über ein Shell-Skript vorgestellt. Jetzt werde ich es mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor und werfen wir einen Blick darauf

Bei der Bereitstellung von Projekten auf UBuntu starten wir das Programm häufig über eine Shell oder rufen das Java-Programm sogar regelmäßig über die geplante Crontab-Aufgabe auf, aber es gibt ein sehr seltsames Problem Ich habe zum Beispiel das folgende Shell-Skript geschrieben:


#!/bin/sh
export mypath=/root/project/wishnomal

java -Xmx3000m -Xms3000m -server -d64 -Dfile.encoding=UTF-8 -Dfetch.threads=300 -classpath $mypath/:$mypath/wish2-assembly-1.0.0.jar newstandard.CrawlerNewStandard $*

echo "END"
Nach dem Login kopieren

Wenn Sie das Skript manuell über die Befehlszeile ausführen, können Sie das Java-Programm normal ausführen, aber Verwenden Sie die geplante Crontab-Aufgabe, sie scheint keine Wirkung zu haben

Analyse möglicher Gründe:

1) Ob der aktuelle Benutzer keine ausführbaren Berechtigungen für dieses Shell-Skript hat, übergeben Sie ls -lrt / apps/service/mtk/checking/ Run.sh prüft, ob das Skript ausführbar ist, verfügt jedoch über die Ausführungsberechtigung – rwxr-xr-x

2) Da die alleinige Ausführung des Skripts kein Problem darstellt, ist es ein Timing Ausgabe? Also habe ich ein einfaches Ausgabe-Shell-Skript geschrieben und es gab zeitlich keine Probleme. Das Problem liegt immer noch am Skript.

Später habe ich online nachgeschaut und dachte, es könnten die Umgebungsvariablen im Skript sein, denn wenn das Skript über crontab ausgeführt wird, wird der Root-Benutzer anstelle des aktuellen Benutzers verwendet, also habe ich zur Überprüfung die Datei /etc/profile verwendet Die Umgebungsvariablen und dann ändern Sie sie wie folgt:

Analyse möglicher Gründe:

1) Überprüfen Sie über ls, ob der aktuelle Benutzer keine ausführbaren Berechtigungen für dieses Shell-Skript hat -lrt /apps/service/mtk/checking/run.sh Das Skript ist ausführbar, verfügt aber über die Ausführungsberechtigung -rwxr-xr-x

2) Da es kein Problem darstellt, das Skript alleine auszuführen, oder? ein Timing-Problem? Also habe ich ein einfaches Ausgabe-Shell-Skript geschrieben und es gab zeitlich keine Probleme. Das Problem liegt immer noch am Skript.

Später habe ich online nachgeschaut und dachte, es könnten die Umgebungsvariablen im Skript sein, denn wenn das Skript über crontab ausgeführt wird, wird der Root-Benutzer anstelle des aktuellen Benutzers verwendet, also habe ich zur Überprüfung die Datei /etc/profile verwendet Die Umgebungsvariablen und dann ändern Sie sie wie folgt:


#!/bin/sh
export mypath=/root/project/wishnomal
export JAVA_HOME=/root/lib/jdk1.7.0_72
PATH=$PATH:$JAVA_HOME/bin

java -Xmx3000m -Xms3000m -server -d64 -Dfile.encoding=UTF-8 -Dfetch.threads=300 -classpath $mypath/:$mypath/wish2-assembly-1.0.0.jar newstandard.CrawlerNewStandard $*

echo "END"
Nach dem Login kopieren

Export zeigt die als Benutzerumgebungsvariablen exportierten

an Auf diese Weise sind die von Crontab geplanten Aufgaben normal.

Änderungsreferenz:


#!/bin/sh 
# ----------------------------------------------------------------------------- 
# Start script for the CMGP BOSSCONTROL  
# 
# $Id: run_bosscontrol.sh,v 1.0 2007/11/06 Exp $ 
# ----------------------------------------------------------------------------- 
#指定字符集 
LANG=zh_CN.GBK export LANG 
RUN_HOME=. 
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/checking.jar 
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/ojdbc14.jar 
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/commons-dbutils-1.1.jar 
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/log4j-1.2.14.jar 
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/dom4j-1.6.jar 
 
export CLASSPATH 
 
java com.**.checking.Checking_Start >> log.out &
Nach dem Login kopieren

Wenn Sie das Skript manuell über die Befehlszeile ausführen, können Sie das Java-Programm normal ausführen, jedoch mit crontab geplant Aufgaben, es scheint, dass es nicht mehr funktioniert. Ich bin sehr deprimiert. Überprüfen Sie den Grund und analysieren Sie die möglichen Gründe:

1) Ob der aktuelle Benutzer keine ausführbaren Berechtigungen für dieses Shell-Skript hat, verwenden Sie ls -lrt /apps/service/mtk/checking /run.sh zeigt an, dass das Skript ausführbar ist, aber über die Ausführungsberechtigung verfügt -rwxr-xr-x

2) Da es kein Problem gibt, das Skript alleine auszuführen , ist es ein Timing-Problem? Also habe ich ein einfaches Ausgabe-Shell-Skript geschrieben und es gab zeitlich keine Probleme. Das Problem liegt immer noch am Skript.

Später habe ich online nachgeschaut und dachte, es könnten die Umgebungsvariablen im Skript sein, denn wenn das Skript über crontab ausgeführt wird, wird der Root-Benutzer anstelle des aktuellen Benutzers verwendet, also habe ich zur Überprüfung die Datei /etc/profile verwendet die Umgebungsvariablen und ändern Sie sie dann wie folgt:


#!/bin/sh 
# ----------------------------------------------------------------------------- 
# Start script for the CMGP BOSSCONTROL  
# 
# $Id: run_bosscontrol.sh,v 1.0 2007/11/06 Exp $ 
# ----------------------------------------------------------------------------- 
export PATH=/apps/usr/java/jdk1.5/bin:$PATH 
export JAVA_HOME=/apps/usr/java/jdk1.5 
export JRE_HOME=/apps/usr/java/jdk1.5/jre 
export CLASSPATH=/apps/usr/java/jdk1.5/lib:/apps/usr/java/jdk1.5/jre/lib:$CLASSPATH 
RUN_HOME=/apps/service/checking 
CLASSPATH=$CLASSPATH$RUN_HOME/lib/checking.jar 
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/ojdbc14.jar 
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/commons-dbutils-1.1.jar 
CLASSPATH=$CLASSPATH:$RUN_HOME/lib/log4j-1.2.14.jar 
 CLASSPATH=$CLASSPATH:$RUN_HOME/lib/dom4j-1.6.jar 
 
export CLASSPATH=$CLASSPATH 
 
java com.**.checking.Checking_Start >> log.out &
Nach dem Login kopieren

export zeigt die als Benutzerumgebungsvariablen exportierten Umgebungsvariablen an

Das obige JAR-Paket wird über das Eclipse-Tool exportiert. Der Export enthält nicht die MANIFEST.MF-Datei. Wenn Sie das Verpackungstool Ant verwenden, können wir Class-Path

in der Standard-Build.xml festlegen Datei und fügen Sie das Drittanbieter-JAR-Paket zur Datei manifest.mf hinzu, geben Sie die Programmhauptklasse

an und fügen Sie den folgenden Inhalt in build.xml hinzu:


<!-- create a property containing all .jar files, prefix lib/, and seperated with a space --> 
<pathconvert property="libs.project" pathsep=" "> 
  <mapper> 
   <chainedmapper> 
    <!-- remove absolute path --> 
    <flattenmapper /> 
    <!-- add lib/ prefix --> 
    <globmapper from="*" to="lib/*" /> 
   </chainedmapper> 
  </mapper> 
   <path> 
   <!-- lib.home contains all jar files, in several subdirectories --> 
   <fileset dir="${lib.dir}"> 
   <include name="**/*.jar" /> 
   </fileset> 
   </path> 
 </pathconvert>
Nach dem Login kopieren

Fügen Sie außerdem beim Erstellen der Manifestdatei Folgendes hinzu:


<!-- 这样就可以将第三方jar包加入 -->  
<attribute name="Class-Path" value="${libs.project}" /> 
<!-- 程序运行的主类 --> 
<attribute name="Main-Class" value="com.**.checking.Checking_Start " />
Nach dem Login kopieren

Führen Sie den Inhalt von MANIFEST.MF wie folgt aus Das resultierende JAR-Paket lautet wie folgt:


Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.7.0 
Created-By: 1.5.0_09-b01 (Sun Microsystems Inc.) 
Implementation-Title: fee task 
Implementation-Version: 1.0 
Implementation-Vendor: Aspire 
Main-Class: com.aspire.cmgp.flowcontrol.server.FlowControlServer 
Class-Path: lib/cmgp-util-1.0.1.jar lib/commons-codec-1.3.jar lib/comm 
 ons-collections.jar lib/commons-dbcp-1.2.1.jar lib/commons-httpclient 
 .jar lib/commons-logging.jar lib/commons-pool-1.2.jar lib/dom4j.jar l 
 ib/log4j.jar lib/ojdbc14.jar
Nach dem Login kopieren

Auf diese Weise ist es nicht erforderlich, das vom Programm benötigte JAR-Paket im Shell-Skript anzugeben, und Es gibt kein lästiges Problem beim Festlegen von Umgebungsvariablen. So funktionieren die formelleren.

Führen Sie einfach das JAR-Paket direkt in der Shell aus: java -jar main program.jar -Xmx1024m -Xms1024m -Xmn512m,

Append < after #!/bin/bash 🎜>

source /etc/profile

source ~/.bash_profile

Test. .


#! /bin/sh
export JAVA_HOME=/usr/java/jdk1.6.0_18
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
for i in lib/*.jar; 
    do CLASSPATH=$i:${CLASSPATH} 
done
export CLASSPATH=.:${CLASSPATH}
Nach dem Login kopieren
java -cp ${CLASSPATH} Der Paketname, in dem sich die Hauptmethode befindet. Der Klassenname, in dem sich die Hauptmethode befindet.

Das obige ist der detaillierte Inhalt vonDas Shell-Skript implementiert die Methode zum Ausführen des Java-Programms jar. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

See all articles