ubuntuusers.de

Java-Programm starten

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Arthur007Engel

Anmeldungsdatum:
2. April 2005

Beiträge: 62

Wohnort: Jena

Ich hab da ein erfreulicherweise plattformunabhängiges Programm von Ritto (www.ritto.de, nennt sich rittoselect) zur Planung von Türsprechanlagen. Unter Windows läuft es.

Java hab ich installiert, die .jar-Datei läuft auch b.z.w. entpackt das Programm. Zum Starten gibt es eine "start.bat", welche wohl auch unter Linux laufen soll, naja, bei mir eben nicht. So sieht sie aus:

@echo off

if defined JAVA_HOME (
  
  set PATH=$PATH;%JAVA_HOME%/bin
)

java -version
rem ggf. test auf bestimmte java version...


if %ERRORLEVEL% == 0 (

  goto :START
)


rem **********************
rem *** Java not found ***
rem **********************

net send localhost "No java VM Found, abort"

if NOT %ERRORLEVEL% == 0 (

  CLS
  echo.
  echo No java VM Found, abort
  echo.

  pause
)

exit


:START
rem **********************
rem *** Java found     ***
rem **********************

rem javaw -Xmx128m -classpath "RiTTO Select.jar" de.ritto.select_2.CopyrightFrame
start javaw -Xmx128m -classpath "RiTTO Select.jar" de.ritto.select_2.CopyrightFrame

Jedenfalls passiert da nicht das Gewünschte, der Dateityp ist mit "Unterschiede zwischen Dateien" verknüpft. Wie kann ich diese datei anders verknüpfen?

Oder anders: Da sind nun etliche Dateien mit der Endung .class, bei denen funktioniert auch nichts. Nichts zum draufklicken, nichts zum Starten im Terminal. Wie bekommt man so ein Programm zum Laufen???

mfG

Jan

FireHawk

Anmeldungsdatum:
11. Mai 2005

Beiträge: 230

Hi!

erstmal kein Problem...

Es müssen ein paar Voraussetzungen erfüllt sein:
1. Java muss installiert sein: Im Wiki ist ein guter Artikel dazu: Java
2. Java muss auch funktionieren:

  1. Ein Terminal öffnen (Terminal)
    b. Lasse Dir die Version von Java anzeigen:

java -version

sollte eine Ausgabe ähnlich wie die Folgende liefern:

java version "1.5.0_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_05-b05)
Java HotSpot(TM) Client VM (build 1.5.0_05-b05, mixed mode, sharing)


3. Du musst wissen, wie man Java Programme startet. (Siehe weiter unten...)

Java Programme starten:

Java Programme werden als jar-Datei ausgeliefert. Es ist nicht nötig diese zu entpacken.
Starten kann man ein jar im Terminal mit:

java -jar JarFile.jar

In Deinem Fall:

java -jar RITTO\ Select.jar


Der '\' kommt durch das Leerzeichen!

Installationsanleitung für Dich:
1. Entpacke das Zip-File in ein Verzeichnis Deiner wahl. Am Besten in Dein Home-Verzeichnis. z.B. /home/arthur/ritto
2. Kopiere diesen Code in eine Textdatei in dem Ritto Verzeichnis, die Du 'start.sh' nennst. z.B. /home/arthur/ritto/start.sh

#!/bin/bash

start_ritto() {
   echo "starting..."

   JAR_FILE="RITTO Select.jar"
   ${JAVA_PATH} -jar "${JAR_FILE}"
}

check_java() {
    JAVA_PATH=`which java`

    if [[ -n "${JAVA_PATH}" ]] ; then
        echo "Java found at: ${JAVA_PATH}"
        return 0
    else
        echo "Java not found!"
        return 1
    fi
}
check_java
if [[ check_java -eq "0" ]] ; then
    start_ritto
else
    echo "Can not start RITTO!"
fi


3. Du musst dieses Script ausführbar machen: (Im Terminal)

chmod u+x /home/arthur/ritto/start.sh


4. Durch ausführen von

/home/arthur/ritto/start.sh

wird das Programm gestartet.
5. Du kannst auch ein Symbol auf Deinem Desktop anlegen: (hier KDE; hab grad kein Gnome)

  1. Rechtsklick auf den Desktop
    b. Neu erstellen → Verknüpfung zu Programm
    c. Reiter 'Programme': Befehl: /home/arthur/ritto/start.sh
    d. Du kannst jetzt noch Kommentare und ein Icon zuweisen.

Hinweise:
Diese Bat-Datei ist ein Windows Batch-Script. Kann also nur unter Windows gestartet werden.
Diese class-Dateien enthalten den Programmcode eines Java-Programms. Diese sollte man bei einem fertigen Programm nicht direkt aufrufen müssen. (Geht aber auch...)

Viel Erfolg!

FireHawk

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

Ich stimme FireHawk auf breiter Front zu, aber konnte es nicht lassen, das Script für Linux zu übersetzen:

#!/bin/bash

if \[[ "a"$JAVA_HOME != "a" ]] ; then
PATH=$PATH:$JAVA_HOME/bin
fi

function startfunction {
# *********************
# *** Java found ***
# *********************

java -Xmx128m -jar "RiTTO Select.jar" de.ritto.select_2.CopyrightFrame
#
# start javaw -Xmx128m -classpath "RiTTO Select.jar" de.ritto.select_2.CopyrightFrame
#
}

function errorfunction {

# ************************
# *** Java not found ***
# ************************

zenity --error --error-text "No java VM Found, abort" || ( clear && echo "No java VM Found, abort" && read dummy )

}

java -version && startfunction || errorfunction
# ggf. test auf bestimmte java version...

Die erste Prüfung des Scripts ist Mist.
Die meisten, die die JAVA_HOME - Variable gesetzt haben, haben das bin-Dir ohnehin im Pfad.
Die 3 Zeilen bringen das bin-Dir ein zweites Mal in den Pfad - kein Beinbruch, aber elegant ist das nicht.

Die Bildschirmlöschung vor der Fehlermeldung ist nicht nett - vielleicht stand vorher etwas interessantes auf der Konsole, was nun gelöscht ist.

Wozu 'start javaw' genau gut ist weiß ich nicht.
javaw startet java, ohne ein Terminalfenster zu öffnen, soweit ich weiß, aber 'start'?
Nun ja, und -classpath Foo.jar statt -jar Foo.jar zu nutzen macht auch keinen sonderlichen Sinn.
Immerhin hat sich der Scriptschreiber nochmal überlegt, ob das mit der Version so klug ist. ☺

Wenn Du das Script verwenden willst, nenn es ritto.sh, und mach es mit chmod a+x ritto.sh ausführbar (executable) für alle.

Arthur007Engel

(Themenstarter)

Anmeldungsdatum:
2. April 2005

Beiträge: 62

Wohnort: Jena

user unknown hat geschrieben:

Ich stimme FireHawk auf breiter Front zu, aber konnte es nicht lassen, das Script für Linux zu übersetzen:

[Dateiinhalt, danke dafür]

Wenn Du das Script verwenden willst, nenn es ritto.sh, und mach es mit chmod a+x ritto.sh ausführbar (executable) für alle.

Okay, ich hab es "start.sh" genannt, tja, und das kam dabei heraus:

bash: cd: /home/jan/ritto/select_2/start.sh: Datei oder Verzeichnis nicht gefunden
jan@jan01:~$ cd /home/jan/ritto/select_2/
bash: cd: /home/jan/ritto/select_2/: Datei oder Verzeichnis nicht gefunden
jan@jan01:~$ cd /home/jan/ritto/de/ritto/select_2/
jan@jan01:~/ritto/de/ritto/select_2$ start.sh
bash: start.sh: command not found
jan@jan01:~/ritto/de/ritto/select_2$ sh start.sh
: command not found
'tart.sh: line 7: syntax error near unexpected token {\\ 'tart.sh: line 7: function startfunction {
jan@jan01:~/ritto/de/ritto/select_2$ '/home/jan/ritto/de/ritto/select_2/start.sh'
bash: /home/jan/ritto/de/ritto/select_2/start.sh: /bin/bash^M: bad interpreter: Datei oder Verzeichnis nicht gefunden
jan@jan01:~/ritto/de/ritto/select_2$ '/home/jan/ritto/de/ritto/select_2/start.sh'
bash: /home/jan/ritto/de/ritto/select_2/start.sh: /bin/bash^M: bad interpreter: Datei oder Verzeichnis nicht gefunden
jan@jan01:~/ritto/de/ritto/select_2$ cd /home/jan
jan@jan01:~$ '/home/jan/ritto/start.sh'
bash: /home/jan/ritto/start.sh: /bin/bash^M: bad interpreter: Datei oder Verzeichnis nicht gefunden
jan@jan01:~

Also irgendwie nicht das Gelbe vom Ei. Wobei der Vorwurf an Ritto geht, die hätten ja ein funktionierendes Shellscript schreiben können.

Ich bohre jetzt mal in Richtung Ritto weiter.

Gruß

Jan

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

Arthur007Engel hat geschrieben:

Okay, ich hab es "start.sh" genannt, tja, und das kam dabei heraus:

bash: cd: /home/jan/ritto/select_2/start.sh: Datei oder Verzeichnis nicht gefunden

Wenn es da gewesen wäre, hättest Du doch nicht in die Datei start.sh wechseln können - man kann nur in Verzeichnisse wechseln.

Arthur007Engel hat geschrieben:

jan@jan01:~$ cd /home/jan/ritto/select_2/
bash: cd: /home/jan/ritto/select_2/: Datei oder Verzeichnis nicht gefunden
jan@jan01:~$ cd /home/jan/ritto/de/ritto/select_2/
jan@jan01:~/ritto/de/ritto/select_2$ start.sh
bash: start.sh: command not found

start.sh ist nicht in einem Verzeichnis aus dem Pfad ($PATH) gefunden worden. Das aktuelle Verzeichnis ist nicht per se im Pfad.
Deswegen ruft man das Script mit: ./start.sh auf.

Arthur007Engel hat geschrieben:

jan@jan01:~/ritto/de/ritto/select_2$ sh start.sh
: command not found
'tart.sh: line 7: syntax error near unexpected token {\\ 'tart.sh: line 7: function startfunction {
jan@jan01:~/ritto/de/ritto/select_2$ '/home/jan/ritto/de/ritto/select_2/start.sh'
bash: /home/jan/ritto/de/ritto/select_2/start.sh: /bin/bash^M: bad interpreter: Datei oder Verzeichnis nicht gefunden
jan@jan01:~/ritto/de/ritto/select_2$ '/home/jan/ritto/de/ritto/select_2/start.sh'
bash: /home/jan/ritto/de/ritto/select_2/start.sh: /bin/bash^M: bad interpreter: Datei oder Verzeichnis nicht gefunden
jan@jan01:~/ritto/de/ritto/select_2$ cd /home/jan
jan@jan01:~$ '/home/jan/ritto/start.sh'
bash: /home/jan/ritto/start.sh: /bin/bash^M: bad interpreter: Datei oder Verzeichnis nicht gefunden
jan@jan01:~

Das ^M ist ein Zeichen dafür, daß die Datei unter Windows erzeugt wurde, und daher \n\r statt \n als Zeilentrenner verwendet.
Das bekommt man weg mit dos2unix, dos2linux oder recode (die selten installiert sind), oder mit gedit:

Suchen: \r 
Ersetzen durch:    (nix)

Wie die ^Ms aka \r alias Carriage-Returns oder Wagenrückläufe da reingekommen sind, kannst hoffentlich Du erklären - ich kann es nicht.

Arthur007Engel

(Themenstarter)

Anmeldungsdatum:
2. April 2005

Beiträge: 62

Wohnort: Jena

user unknown hat geschrieben:

start.sh ist nicht in einem Verzeichnis aus dem Pfad ($PATH) gefunden worden. Das aktuelle Verzeichnis ist nicht per se im Pfad.
Deswegen ruft man das Script mit: ./start.sh auf.

Ach ja, das sind meine kleinen temporären Lücken, wenn es um die bash geht 😉)

user unknown hat geschrieben:

Das ^M ist ein Zeichen dafür, daß die Datei unter Windows erzeugt wurde, und daher \n\r statt \n als Zeilentrenner verwendet.
Das bekommt man weg mit dos2unix, dos2linux oder recode (die selten installiert sind), oder mit gedit:

Suchen: \r 
Ersetzen durch:    (nix)

Wie die ^Ms aka \r alias Carriage-Returns oder Wagenrückläufe da reingekommen sind, kannst hoffentlich Du erklären - ich kann es nicht.

Ich hab die Datei aus Deiner ersten Antwort herauskopiert und in die start.sh reingepackt, mehr nicht. Und wo da ein CR stehen soll ist mir schleierhaft, da kann ich mit Kate machen, was ich will. Oder mal nano probieren? Und: Kate hat kein "\r" gefunden. Nun das Rätsel: Woher nimmt die Bash das Dingens mit dem M???

Jan

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

Vielleicht liege ich auch falsch.
Eine md5-Summe könnte klären, ob wir die gleiche Datei haben.

md5sum jStart.sh
b5526b4a7a0e0801bb8b9615449c5330  jStart.sh


Der Name wird nicht analysiert - daß die Datei bei Dir start.sh heißt, spielt keine Rolle.

FireHawk

Anmeldungsdatum:
11. Mai 2005

Beiträge: 230

Hi!

ich habe das Script von user unknown kopiert. Das funktioniert bei mir einwandfrei.
Kleine Ausnahme: In Zeile 12 ist "RITTO Select.jar" mit einem kleinen i geschrieben.

Du kannst mit

cat -A jstart.sh

die Zeilenenden sichtbar machen.

Beispiel:

#!/bin/bash$
$
if [[ "a"$JAVA_HOME != "a" ]] ; then$
PATH=$PATH:$JAVA_HOME/bin$
fi$
$
#.....

Falls die Windows Zeilenenden vorhanden sind, steht statt dem '$' ein '^M$'

Du kannst das mit

dos2unix jstart.sh

in das richtige Format konvertieren. Sollt der Befehl nicht vorhanden sein, musst Du das sysutils Paket nachinstallieren.

FireHawk

peak293

Anmeldungsdatum:
3. März 2017

Beiträge: 17

DAAAAAANKE für die SUPER Anleitung!!! Damit habe selbst ich ein "Marke-Eigenbau"-Programm eines Bekannten wieder zum Laufen bekommen, das mir sehr wichtig ist!!!

Antworten |