# Kommunikation zwischen 2 Jar-dateien



## AnFÄnGE_R (10. Dez 2011)

Hallo Leute,
ich habe folgendes Problem und bei Google irgendwie nichts gefunden :
Ich möchte einer Variablen in 1.jar einen Wert übergeben und diese Variable dann in 2.jar verwenden und auslesen

Wie kann ich das machen. Muss ich vielleicht eine Schnittstelle einbauen damit die beiden Jar-Dateien miteinander kommunizieren können ?

Wie mein Name schon sagt bin ich noch Anfäger in der Java-Programmierung 

Wäre toll wen ihr mir helfen könntet.
gez. Anfänger


----------



## Marcinek (10. Dez 2011)

Wenn du zwei Java VMs hast in denen die zwei JarDAteien Arbeiten (z.b: Client und Server)

Dann brauchst du etwas zur Interprozesskommunikation

RMI, EJB, Sockets, Files, HTTP


----------



## Empire Phoenix (10. Dez 2011)

Alternativ einfach ein Project 3 machen, das 1.jar und 2.jar im buildpath hat, und entsprechen die Methodenaufrufe weitergibt an die andere.


----------



## AnFÄnGE_R (11. Dez 2011)

Marcinek hat gesagt.:


> Wenn du zwei Java VMs hast in denen die zwei JarDAteien Arbeiten (z.b: Client und Server)
> 
> Dann brauchst du etwas zur Interprozesskommunikation
> 
> RMI, EJB, Sockets, Files, HTTP



Danke für die Idee, aber ich möchte das 1.jar beim Ausführen im Hintergrund 2.jar läd und ihr dann wenn sie benötigt wird die nötigen Parameter übergibt.



			
				Empire Phoenix hat gesagt.:
			
		

> Alternativ einfach ein Project 3 machen, das 1.jar und 2.jar im buildpath hat, und entsprechen die Methodenaufrufe weitergibt an die andere.



Klingt gut. Da ich noch Anfänger bin könntest du mir vlt. in groben Zügen sage wie ich das implementieren kann ? Muss ich in den Haupklassen der Jar - Dateien Interfaces einsetzten, welche dann auf eine Methode der 2 Jar warten um ihre Parameter zu bekommen ?


----------



## Gast2 (11. Dez 2011)

> Danke für die Idee, aber ich möchte das 1.jar beim Ausführen im Hintergrund 2.jar läd und ihr dann wenn sie benötigt wird die nötigen Parameter übergibt.


Wenn die zwei in verschiedenen VMs laufen dann kommst du um Sockets, RMI, oder ähnliches nicht drumrum.

EDIT:
Was genau sind denn 1.jar und 2.jar? Welche aufgaben sollen die haben?


----------



## AnFÄnGE_R (11. Dez 2011)

Naja als Beispiel:
Jar 1 öffnet das Hauptprogramm mit welchem man Graphen erstellen kann. Jar 2 ist dafür zuständig das man die Farben und Namen der Menüpunkte ändern kann (sie soll im Hintergrund geladen werden, also wie eine Art Plugin)


----------



## L-ectron-X (11. Dez 2011)

Dann genügt es die Manifest-Datei aus dem Jar des Hauptprogrammes um den Classpath zu erweitern und dort das Plugin-Jar aufzulisten.


----------



## AnFÄnGE_R (12. Dez 2011)

Also steht dann in der Mainfest Datei:


```
Mainfest-Version: 1.0
Main-Class: graph.com.main
Class-2: graphplugin.colors
```

?


----------



## AnFÄnGE_R (12. Dez 2011)

Ein Freund von mir (Minecraftspieler) hat so einen Server (Bukkit).
Da dieser Server und somit seine Plugins ebenso in Java geschrieben sind, hatte er mich gebeten ein Plugin für ihn zu prgrammieren. Dafür musste ich nur eine Klasse mit dem Namen JavaPlugin erweitern und 2 Methoden überschreiben, damit das PlugIn andoken kann :


```
import bukkit.org.JavaPlugin;

public class Test extends JavaPlugin{

onDisable(){
 System.out.println("OFF");
}

/**
*Diese Methode überschreibt die Methoden von JavaPlugin
*Was macht das Plugin wenn es eingeschaltet ist ?
*/
onEnable(){
 System.out.println("ON");
  System.out.println("Version 0.1");
}
```

So in etwa möchte ich es auf mein kleines Programm übertragen.


----------



## L-ectron-X (12. Dez 2011)

Das sind nun aber ganz andere Bedingungen...
Dann schau mal hier: Java-Programme durch PlugIns erweitern ? Byte-Welt Wiki


----------



## AnFÄnGE_R (13. Dez 2011)

Sorry das ich mich nicht klar ausgedrückt habe ^^
Danke für den Link ich guck ihn mir mal an


----------



## AnFÄnGE_R (1. Jan 2012)

Danke an alle. Das Forum ist echt Klasse.


----------



## AnFÄnGE_R (27. Mrz 2012)

Ich verzweifle noch an einer Frage: 
Wie bekomme ich die Werte aus dem Interface in das Hauptprogramm (Klasse mit Startmethode) ?
Ein Interface kann ja schließlich keine Main() - Methode enthalten und ein neues Objekt des Interfaces kann die Hauptklasse auch nicht anlegen.

LG Anfänger.


----------



## Michael... (27. Mrz 2012)

Zunächst einmal kann ein Interface keine Werte enthalten, ein Interface definiert nur die zu implementierenden Eigenschaften.
Daher: Was meinst Du mit Interface und woher "kommt" es?


----------



## irgendjemand (27. Mrz 2012)

Michael... hat gesagt.:


> Zunächst einmal kann ein Interface keine Werte enthalten, ein Interface definiert nur die zu implementierenden Eigenschaften.
> Daher: Was meinst Du mit Interface und woher "kommt" es?



sicher ? IMO können Interfaces ebenfalls konstanten enthalten *auch wenn das wenig sinn macht*


----------



## Michael... (27. Mrz 2012)

irgendjemand hat gesagt.:


> sicher ? IMO können Interfaces ebenfalls konstanten enthalten *auch wenn das wenig sinn macht*


Klar kann ein Interface Konstanten definieren, denke aber nicht, das das hier gemeint war.


----------



## irgendjemand (28. Mrz 2012)

Michael... hat gesagt.:


> Klar kann ein Interface Konstanten definieren, denke aber nicht, das das hier gemeint war.



ja .. ist mir auch klar ... aber ich wollte nur drauf hinweisen das ein interface an sich grundsätzlich schon werte in form von konstanten enthalten kann ... wobei mir dafür aber erlich gesagt nicht mal ein sinn einfällt ...


----------

