Seite 1 von 2

Beispiel Start-Skripte (Linux/Win)

Verfasst: 16. Nov 2009 18:38
von RomanMertyn
Hier ist ein Beispiel wie ein Start-Script für eure Programme unter Linux aussehen könnte:

Code: Alles auswählen

#!/bin/bash
#	Author 	R.Mertyn
#	Date	12.11.2009

# Define varibles:
# SRC --> Full Path to directory with *.java files
SRC="./src"
# BIN --> Please don't change this one
BIN="./bin"
# ROOT_PACKAGE --> Root packeage of your program
ROOT_PACKAGE="package"
# MAIN_CLASS --> A class that contain main() procedure 
MAIN_CLASS="Main"
# CLASSPATH --> You should use it you have used a extern library
CLASSPATH=""
# OPTIONS --> You should define JVM options here. You could use some already defined 
#             variables, like example below
OPTIONS="-Djava.rmi.server.codebase="$BIN

if [ ! -e $BIN ] 
then
 mkdir $BIN
 javac -d $BIN $SRC"/"$ROOT_PACKAGE"/*.java"
fi
 cd $BIN

# Create command parameter
if [ $ROOT_PACKAGE!="" ]
then
   COMM=$ROOT_PACKAGE"."$MAIN_CLASS
else
   COMM=$MAIN_CLASS
fi
 java -cp $CLASSPATH $ROOT_PACKAGE.$MAIN
#echo java -cp $CLASSPATH $OPTIONS $COMM #DEBUG
Schaft es jemand diesen Skript für Windows bzw. DOS umschreiben ???

Re: Beispiel Start-Skript unter Linux

Verfasst: 17. Nov 2009 14:30
von Tigger
Habs mal umgeschrieben. Ich hoffe es funktioniert so alles.
Wer noch Fehler findet, bitte melden.

Code: Alles auswählen

@ECHO off
REM Batch File
REM   Author  Gregor Wicklein
REM   Date   17.11.2009

REM Define varibles:
REM SRC --> Full Path to directory with *.java files
SET SRC=./src
REM BIN --> Please don't change this one
SET BIN=./bin
REM ROOT_PACKAGE --> Root packeage of your program
SET ROOT_PACKAGE=NONE
REM MAIN_CLASS --> A class that contain main() procedure
SET MAIN_CLASS=
REM CLASSPATH --> You should use it 
REM you have used a extern library
set CLASSPATH=

REM OPTIONS --> You should define JVM options here. You could use some already defined
REM             variables, like example below
SET OPTIONS=-Djava.rmi.server.codebase=%BIN%

IF NOT EXIST .\bin GOTO makecode
GOTO startprog
:makecode
mkdir bin
IF %ROOT_PACKAGE% == NONE GOTO else1
:then1
@ECHO on
javac -d %BIN%/ %SRC%/%ROOT_PACKAGE%/*.java
@ECHO off
GOTO startprog
:else1
@ECHO on
javac -d %BIN%/ %SRC%/*.java
@ECHO off
GOTO startprog



:startprog
IF %ROOT_PACKAGE% == NONE GOTO else
:then
set COMM=%ROOT_PACKAGE%.%MAIN_CLASS%
GOTO finish
:else
set COMM=%MAIN_CLASS%
GOTO finish


:finish

echo java -cp %CLASSPATH% %OPTIONS% %COMM% 
java -cp %CLASSPATH% %OPTIONS% %COMM%
REM java -cp %ROOT_PACKAGE%.%MAIN_CLASS%
REM java -cp %CLASSPATH% %OPTIONS% %COMM% 

Falls die Console meckert, weil sie "javac" nicht kennt, müsst ihr die PATH-Variable aktualisieren. Wie das geht steht hier: http://java.sun.com/j2se/1.3/install-wi ... nvironment.

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 17. Nov 2009 16:54
von MisterD123
blöde frage - bei mir funktioniert der RMI spaß ohne jegliche parameter, sofern ich nicht aus meinem NAT-Netzwerk raushosten will, dann muss ich den hostnamen angeben. codebase hab ich bisher nicht gebraucht.

Ich war jetzt am Montag leider nicht in der Übungsstunde, ich vermute mal, da wurde etwas bezüglich dieser start scripts gesagt - was hats damit auf sich? gehören die verpflichtend zum umfang der abgabe oder sollen die einfach nur eine hilfe darstellen wenn man probleme beim starten hat oder für was sind sie gut?

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 17. Nov 2009 17:36
von RomanMertyn
Die Skripte müssen nicht mitgeschickt werden, sind aber erwünscht (fehlen von Skripten führt NICHT zum Punkteabzug).

Ich muss mir deine Lösung anschauen, um festzustellen, ob das ganze auch wie gewünscht funktioniert.
In den meisten Fällen lässt sich der Server noch nicht mal binden, wenn codebase-Parameter nicht stimmt.

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 18. Nov 2009 02:49
von RomanMertyn
2Tigger - Dein Script funktioniert bei mir nicht, :-( schade sieht gut aus.

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 18. Nov 2009 11:05
von Tigger
RomanMertyn hat geschrieben:2Tigger - Dein Script funktioniert bei mir nicht, :-( schade sieht gut aus.
Was genau klappt denn bei dir nicht? Compiliert und/oder startet er nicht? Spuckt er nen Fehler raus? Funktioniert "javac" auf der windows-konsole? Bei mir hats eigentlich funktioniert. Ansonsten hab ich dir ne pm geschickt.

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 18. Nov 2009 11:39
von MisterD123
javac funktioniert wenn das bin-verzeichnis der SDK im path ist.

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 18. Nov 2009 12:13
von dEeP-fRiEd
MisterD123 hat geschrieben:blöde frage - bei mir funktioniert der RMI spaß ohne jegliche parameter, sofern ich nicht aus meinem NAT-Netzwerk raushosten will, dann muss ich den hostnamen angeben. codebase hab ich bisher nicht gebraucht.
Startest du zufällig die RMI Registry im Programm? Dann braucht man nämlich keine codebase, da die Registry ja vom gleichen Classloader, wie der Server Code geladen wird. Du musst die Registry separat über den Befehl "rmiregistry" in der console starten! Hatte den Fehler auch erst gemacht.

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 18. Nov 2009 15:24
von RomanMertyn
dEeP-fRiEd hat geschrieben:
MisterD123 hat geschrieben:blöde frage - bei mir funktioniert der RMI spaß ohne jegliche parameter, sofern ich nicht aus meinem NAT-Netzwerk raushosten will, dann muss ich den hostnamen angeben. codebase hab ich bisher nicht gebraucht.
Startest du zufällig die RMI Registry im Programm? Dann braucht man nämlich keine codebase, da die Registry ja vom gleichen Classloader, wie der Server Code geladen wird. Du musst die Registry separat über den Befehl "rmiregistry" in der console starten! Hatte den Fehler auch erst gemacht.
Guter Punkt. Ich habe keinen Grund für dieses Verhalten gefunden.

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 18. Nov 2009 15:27
von RomanMertyn
Tigger hat geschrieben:
RomanMertyn hat geschrieben:2Tigger - Dein Script funktioniert bei mir nicht, :-( schade sieht gut aus.
Was genau klappt denn bei dir nicht? Compiliert und/oder startet er nicht? Spuckt er nen Fehler raus? Funktioniert "javac" auf der windows-konsole? Bei mir hats eigentlich funktioniert. Ansonsten hab ich dir ne pm geschickt.
Die Ausgabe erzeugt bei mir "NONE" als Package Name. Wenn der Package Name nicht definiert ist, sollte es auch nicht in dem Aufruf von JVM auftauchen.

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 18. Nov 2009 17:02
von Tigger
RomanMertyn hat geschrieben:Die Ausgabe erzeugt bei mir "NONE" als Package Name. Wenn der Package Name nicht definiert ist, sollte es auch nicht in dem Aufruf von JVM auftauchen.
Ich hab den Code eben nochmal korrigiert, hoffe jetzt klappts. Wenn das Projekt in keinem Package ist, soll unter ROOT_PACKAGE einfach NONE stehen.

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 18. Nov 2009 19:19
von MisterD123
dEeP-fRiEd hat geschrieben:
MisterD123 hat geschrieben:blöde frage - bei mir funktioniert der RMI spaß ohne jegliche parameter, sofern ich nicht aus meinem NAT-Netzwerk raushosten will, dann muss ich den hostnamen angeben. codebase hab ich bisher nicht gebraucht.
Startest du zufällig die RMI Registry im Programm? Dann braucht man nämlich keine codebase, da die Registry ja vom gleichen Classloader, wie der Server Code geladen wird. Du musst die Registry separat über den Befehl "rmiregistry" in der console starten! Hatte den Fehler auch erst gemacht.
ist das aus irgendeinem grund verwerflich?

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 18. Nov 2009 19:29
von Wambolo
ich habe auch nicht kapiert warum das nicht erlaubt, bzw.sogar ein Fehler sein soll, wäre nett wenn die Veranstalter sich dazu kurz äußern könnten

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 18. Nov 2009 20:57
von RomanMertyn
Wambolo hat geschrieben:ich habe auch nicht kapiert warum das nicht erlaubt, bzw.sogar ein Fehler sein soll, wäre nett wenn die Veranstalter sich dazu kurz äußern könnten
Ich habe nie behauptet, dass es ein Fehler ist. Solange Server und Client in meiner Umgebung funktionieren, RMI- und MVC-Konzepte mehr oder weniger richtig implementiert sind, kriegt ihr volle Punktzahl.
Falls ihr mögt kann ich die Details zu der Umgebung preisgeben. Da es sich bis jetzt niemanden interessiert hat, in welcher Umgebung die Tests statt finden, habe ich bis dato darauf verzichtet.

Jetzt aber keine Panik kriegen, es ist nichts gemeines. Das ganze ist nur eine Verbindung von 2 Rechner übers Internet.

Re: Beispiel Start-Skripte (Linux/Win)

Verfasst: 19. Nov 2009 01:33
von baerchen
zwei rechner übers internet, und codebase über file-urls...

wenn das so bleibt, bin ich mal gespannt ob eine einzige implementierung richtig läuft....