# ArrayList an andere Java-Anwendung übergeben?



## magic_halli (5. August 2008)

Hi,

ich starte aus einem Java-Programm heraus eine andere Java-Anwendung, welche als JAR-File existiert und schicke dabei noch einen String meinStringParameter mit.
Der Aufruf geschieht erstmal so und funktioniert auch:

```
Runtime rt1 = Runtime.getRuntime();
rt1.exec("java -jar /workspace/AssemblyAFPSExternal.jar " + meinStringParameter);
```

Frage:
Ist es irgendwie möglich, eine ArrayList an eine Java-Anwendung zu übergeben und diese dann dort in der main() wieder auszulesen und zu verwenden? Leider gibts ja nur in der main() das 'String[] args'... 

Hintergrund: Ich möchte einfach vermeiden, mit einem Textfile als "transportablen" Datenspeicher zu arbeiten, dass mir meine Werte bereitstellt, die ich in der aufgerufenen Java-Anwendung nutzen muss. Eine ArrayList ist mir wesentlich lieber! 

Danke und Gruß


----------



## takidoso (5. August 2008)

hmmm also so ist es erstmal denke ich nicht möglich eine Arraylist weiterzugeben. 
Aus meiner sicht geht da kein Weg an einer Datei vorbei. Jedoch gibt es interessante Möglichkeiten nicht selbst groß zu serialiseren und zu deserialiseren. Eine Möglichkeit wäre IMHO yaml. 
http://yaml.org/spec/current.html
Es gibt dazu AFAIK mindestens 2 brauchbare Implementationen in Java, wobei ich jedoch nur Erfahrung mit einer habe, die ganz gut funktioniert, jedoch eine Schwäche hat in Bezug auf brauchbare Fehlermeldungen.
https://jvyaml.dev.java.net/
Es gibt vielleicht auch inzwischen bessere Implementationen, aber dies ist, die ich benutze, wenn gleich meist für komplexere Initialisierungsdateien.

Vielleicht ist dies für Dich eine Kanone für Deinen Spatz und Du bevorzugst lieber eigene Programierkünste. Aber einen direkten Weg für Dein Anliegen kenne ich so nicht.


----------



## Oliver Gierke (5. August 2008)

Dem Jar kannst du nur String Werte als Argumente übergeben. Die einzige möglichkeit, die ich sehe, ist in der Zielanwendung einen RMI Server zu starten und diesen vom Client aus zu benutzen.

Gruß
Ollie


----------



## _jsd_ (5. August 2008)

Hi,

wenns sich um serialisierbare Objekte handelt kannst Du das Array auch mit Hilfe von ObjectOutputStream und Base64 in einen String wandeln und auf der anderen Seite wieder einlesen.

hmf


----------



## magic_halli (6. August 2008)

_jsd_ hat gesagt.:


> Hi,
> 
> wenns sich um serialisierbare Objekte handelt kannst Du das Array auch mit Hilfe von ObjectOutputStream und Base64 in einen String wandeln und auf der anderen Seite wieder einlesen.
> 
> hmf


...das klingt doch nichtmal so schlecht! Das würde ich gern versuchen.
Gibts hierfür evtl. Beispiele, die ihr kennt - ich aber noch nicht gefunden habe? 

Danke und Gruß

EDIT: Ich habe was gefunden und denke, so müsste es gehen, oder?

```
OutputStream fos = null;
fos = new FileOutputStream( "test.ser" );
ObjectOutputStream o = new ObjectOutputStream( fos );
o.writeObject( alFiles );
fos.close();
```


----------

