# Java Klasse durch eine andere Java Klasse starten?



## Guest (8. Nov 2007)

Hi,

ich hoffe ihr könnt mir bei diesem Problem helfen:

Ich möchte ein Java-Programm schreiben, das andere Java-Programme startet ( Die Java Programme benötigen z.T. die Variablen der Starterdatei, bzw. sollen Ihre Ergebnisse, auch in Form von Variablen bereitstellen ).

z.B.:

Starterdatei ( errechnet Wert )  --> startert ein Programm, das den Wert in eine Exceldatei einträgt und sagt der Starterdatei ob alles gut ging, die dann wiederum eine Statusmeldung abgibt.

P.S: Ich möchte nur wissen wie man die Datei startet keine Lösung für mein Beispiel!


----------



## maki (8. Nov 2007)

Definiere "Java Programme starten".

Objekte instanzieren?
Oder eigenständige Java Proramme aufrufen?


----------



## Guest (10. Nov 2007)

Naja, also die Java Programme befinden sich alle in einem Projekt.
Alles was ich machen will, ist das ich eine andere Java-Klasse von meiner Hauptklasse in der alles passiert, starte und mir die Werte der Variablen zurückgeben lasse.


Bsp.:

Hauptprogramm macht nichts anderes, als andere sich im Projekt befindliche Java-Klassen aufzurufen und sich die Variablen-Wert zurück geben lassen.


----------



## Gelöschtes Mitglied 5909 (10. Nov 2007)

klasse != programm

von daher wo is das problem? ^^


----------



## Guest (10. Nov 2007)

Test soll die Hauptklasse sein:


```
/* Test.java */

public class Test {

  public static void main(String[] args) {
    
    int a = Test2.a;
    
    Test2 t2 = new Test2();
    int b = t2.b;
    
    System.out.println("a = " + a + ", b = " + b);
    
  }
}
```


Die Klasse liest die Klassenvariable a und die Instanzvariable b von Klasse Test2 aus.


```
/* Test2.java */

public class Test2 {

  static int a = 3;
  int b = 4;

}
```


Ausgabe:
a = 3, b = 4


----------



## hansz (10. Nov 2007)

Ups,  :shock: 

der letzte Gast war ich!
Habe vergessen mich einzuloggen!   

Gruß hansz.


----------



## Guest (11. Nov 2007)

Echt vielen Dank, bin halt noch a neuling!!!
Cya


----------



## Guest (11. Nov 2007)

Also wenn ich des jetzt bei mir genauso laufen lasse kommt das dabei heraus:

Exception in thread "main" java.lang.Error: Unaufgelöstes Kompilierungsproblem: 
	Erstellen eines statischen (static) Verweises für das nicht-statische Feld Addierer.a nicht möglich


Was mach ich falsch???
Cya


----------



## hansz (11. Nov 2007)

Muss ich erst mal überlegen...  :roll: 

Du hast eine Klasse mit dem Namen Addierer definiert.
Und das Feld a dieser Klasse ist vermutlich nicht mit dem Modifier static versehen.

Vielleicht mal static mit in den Quelltext schreiben.



public class Addierer {

*static*   int a; 

  ...
}


hansz


----------



## Guest (11. Nov 2007)

Vielen Dank das geht schomal.

Aber gibt es auch ne Möglichkeit die Dateien auszulesen, wenn in der auszulesenden Datei auch 

public static void main(String args[] {     steht??



Bsp:

Hauptklasse:


```
public class ExcelUpdate {

	public static void main(String[] args) { 

		  String Sex = ExcelAuslesen.StringSex;
		  
			System.out.println(Sex);
		  
		  
		  
// Hier kommt noch der Code hinein der das ganze in eine ExcelTabelle schreibt....
	  }
    }
```

Die auszulesende Klasse:


```
import java.io.File;
import jxl.*;



class ExcelAuslesen {
	
	 public static void main(String[] args) throws Exception {

    		  
    		  Workbook workbook = Workbook.getWorkbook(new File("User/Users.xls"));
    		  Sheet sheet = workbook.getSheet(0);

    		  int Spalte = 0;
    		  int Zeile = 0;
    		  
    		  Cell Sex = sheet.getCell(Spalte++,Zeile);
    		  Cell Prename = sheet.getCell(Spalte++,Zeile);
    		  Cell Name = sheet.getCell(Spalte++,Zeile);
    		  Cell Street = sheet.getCell(Spalte++,Zeile);
    		  Cell PLZ = sheet.getCell(Spalte++,Zeile);
    		  Cell TelephoneNumber = sheet.getCell(Spalte++,Zeile);
    		  Cell Email = sheet.getCell(Spalte++,Zeile);
    		  Cell Status = sheet.getCell(Spalte++,Zeile);

    		  
    		  
    		  String StringSex = Sex.getContents();
    		  if(StringSex == "")
    		  {StringSex = "";}
    		  
    		  String StringPrename = Prename.getContents();
    		  if(StringPrename == "")
    		  {StringPrename = "";}
    		  
    		  String StringName = Name.getContents(); 
    		  if(StringName == "")
    		  {StringName = "";}
    		  
    		  String StringStreet = Street.getContents();
    		  if(StringStreet == "")
    		  {StringStreet = "";}
    		  
    		  String StringPLZ = PLZ.getContents();
    		  if(StringPLZ == "")
    		  {StringPLZ = "";}
    		  
    		  String StringTelephoneNumber = TelephoneNumber.getContents();
    		  if(StringTelephoneNumber == "")
    		  {StringTelephoneNumber = "";}
    		  
    		  String StringEmail = Email.getContents();
    		  if(StringEmail == "")
    		  {StringEmail = "";}
    		  
    		  String StringStatus = Status.getContents();
    		  if(StringStatus == "")
    		  {StringStatus = "";}

    		  

    		  System.out.println(StringSex);
    		  System.out.println(StringPrename);
    		  System.out.println(StringName);
    		  System.out.println(StringStreet);
    		  System.out.println(StringPLZ);
    		  System.out.println(StringTelephoneNumber);
    		  System.out.println(StringEmail);
    		  System.out.println(StringStatus);
    		  
    		  
    		  
    		  workbook.close();  

}
```


Schonmal vielen Dank. :?:


----------



## Marcel_Handball (11. Nov 2007)

Wenn ich das richtig sehe, schreibst du ein Programm, das einfach aus mehreren Klassen besteht.
Eine dieser Klassen ist das Hauptprogramm (, welches auch gestartet wird).
Diese Hauptklasse greift auf Methoden anderer Klassen zu. Da diese Klassen aber nicht explizit ausgeführt werden,
brauchst du doch in diesen keine main-Methode.

Die Variable(n) der Klasse, auf die zu zugreifst, legst du als Objektvariablen (Klassenvaribalen) an


```
public class ExcelUpdate {

   public static void main(String[] args) {

        ExcelAuslesen lesen = new ExcelAuslesen();
        String Sex = lesen.StringSex;                        // besser wäre mit getMethode und Variable private
       
         System.out.println(Sex);
       
       
     }
}
```


```
import java.io.File;
import jxl.*;



class ExcelAuslesen {
   
    String StringSex = "";

    public static void main(String[] args) throws Exception {

           
            Workbook workbook = Workbook.getWorkbook(new File("User/Users.xls"));
            Sheet sheet = workbook.getSheet(0);

            int Spalte = 0;   // nur Klassen groß schreiben
            int Zeile = 0;
           
            Cell Sex = sheet.getCell(Spalte++,Zeile);
            Cell Prename = sheet.getCell(Spalte++,Zeile);
            Cell Name = sheet.getCell(Spalte++,Zeile);
            Cell Street = sheet.getCell(Spalte++,Zeile);
            Cell PLZ = sheet.getCell(Spalte++,Zeile);
            Cell TelephoneNumber = sheet.getCell(Spalte++,Zeile);
            Cell Email = sheet.getCell(Spalte++,Zeile);
            Cell Status = sheet.getCell(Spalte++,Zeile);

           
           
            StringSex = Sex.getContents();
           
           
            workbook.close(); 

}
```


----------



## Guest (11. Nov 2007)

Naja das geht auch nicht. Er gib mir diesesmal eben nichts aus weil er nur 
	
	
	
	





```
class ExcelAuslesen {
   
    String StringSex = "";
```
 liest.
Des Problem hier ist doch, das ich eigentlich 
	
	
	
	





```
public static void main(String[] args) throws Exception {
```
 rauswerfen müsste, damit mein Programm läuft, aber geanau des kann ich ja nicht da er sonst folgenden Fehler ausgibt:

```
Exception in thread "main" java.lang.Error: Unaufgelöstes Kompilierungsproblem: 
	Syntaxfehler bei Token ";", { wurde nach diesem Token erwartet

	at ExcelAuslesen.<init>(ExcelAuslesen.java:27)
	at ExcelUpdate.main(ExcelUpdate.java:5)
```

Noch Hoffnung :?:  :?:


----------



## Marcel_Handball (11. Nov 2007)

Habe vergessen die zweite Klasse zu verändern. Dort darf natürlich keine main-Methode mehr stehen.
Versuch es mal auf diese Weise (Du startest nur das Hauptprogramm):


```
public class ExcelUpdate {

   public static void main(String[] args) {

        ExcelAuslesen lesen = new ExcelAuslesen();
        String Sex = lesen.getSex();                        // besser wäre mit getMethode und Variable private
       
         System.out.println(Sex);
       
       
     }
}
```


```
import java.io.File;
import jxl.*;



class ExcelAuslesen {

    public String getSex() {

           
            Workbook workbook = Workbook.getWorkbook(new File("User/Users.xls"));
            Sheet sheet = workbook.getSheet(0);

            int Spalte = 0;   // nur Klassen groß schreiben
            int Zeile = 0;
           
            Cell Sex = sheet.getCell(Spalte++,Zeile);
            Cell Prename = sheet.getCell(Spalte++,Zeile);
            Cell Name = sheet.getCell(Spalte++,Zeile);
            Cell Street = sheet.getCell(Spalte++,Zeile);
            Cell PLZ = sheet.getCell(Spalte++,Zeile);
            Cell TelephoneNumber = sheet.getCell(Spalte++,Zeile);
            Cell Email = sheet.getCell(Spalte++,Zeile);
            Cell Status = sheet.getCell(Spalte++,Zeile);

           
           
            String StringSex = Sex.getContents();
           
           
            workbook.close();
            
            return StringSex;
      }

}
```


----------



## Guest (11. Nov 2007)

Bekomme den Fehlercode:


```
Nicht behandelter Ausnahmebedingungstyp (exception type) IOException
	Nicht behandelter Ausnahmebedingungstyp (exception type) BiffException

	at ExcelAuslesen.getSex(ExcelAuslesen.java:11)
	at ExcelUpdate.main(ExcelUpdate.java:6)
```


----------

