Einen Path von einer Main zu einer anderen Main übergeben

Status
Nicht offen für weitere Antworten.

tritko1

Bekanntes Mitglied
Noch eine Frage:

1. Paket: Ich führe ein Main Programm aus und speichere eine Datei.

2. Paket: Ich führe ein Main Programm aus und würde gerne den Pfad
der Datei wissen. Ich weiß schon, dass das erste Programm erst ausgeführt
werden muss, um den Pfad zu kennen.


Das Problem: Im 2. Paket befindet sich eine Klassenvariable, der ich den
Pfad übergebe und wenn ich das 2. Programm ausführen will, dann zeigt er mir
eine FileNotFoundException an.

Wie kann ich denn das Problem lösen?

Vielen Dank nochmal....
 

Leroy42

Top Contributor
tritko1 hat gesagt.:
Im 2. Paket befindet sich eine Klassenvariable, der ich den
Pfad übergebe und wenn ich das 2. Programm ausführen will...

Was verstehst du unter ausführen. Einfacher Aufruf der main-Methode
von Java aus oder neuen Programmstart.

Bei Letzterem sind natürlich Änderungen an den Klassenvariablen
nicht mehr gültig, da du eine vollkommen neue JVM startest.
 

tritko1

Bekanntes Mitglied
Ich übergebe den Pfad über Klassenvariable von dem 1. Paket auf
das 2. Paket.

Vorgehensweise: 1. Main (1. Paket) wird ausgeführt und der String Pfad wird einem static String Pfad (vom 2. Paket) übergeben, sodasss die 2. Main (2. Paket) mit dem String (=Pfad) weiterarbeiten kann.

Hat einer das System verstanden? Ich kann es nochmal erklären, wenn es zu undurchsichtig ist.

Vielen Dank für eure Hilfe.
 

Leroy42

Top Contributor
Mir ist immer noch nicht klar, wie du das 2. Main aufrufst:

Code:
class Main1 {
  public static void main(String[] args) {
    Main2.staticVar = "...";
    Main2.main(null);
  }
}

class Main2 {
  static String staticVar;
  public static void main(String[] args) {
    // Tue was mit staticVar
  }
}

Wenn dein Code in etwa so aussieht, funktioniert was du
vorhast.

Wenn du jedoch eine zweite JVM für den Aufruf von Main2.main hochfährst,
funktioniert dein Vorgehen natürlich nicht.
 

tritko1

Bekanntes Mitglied
Genau so sieht es aus, außer das sich Main1 und Main2
in unterschiedlichen Paketen befinden. Bei mir funktioniert
das aber nicht.....

Ich führe erst die 1. Main aus und dann die 2. Main.

Was mache ich falsch?

Danke
 

tritko1

Bekanntes Mitglied
Kann es sein, das es Probleme gibt, wenn ich dem FileReader den Path , den er in der Klassenvariable (Format: (D:\Documents and Settings\DLBWMRC\Projekt SAP\lagertest.txt) gespeichert haben sollte, so mitgebe??

Er bringt dann nämlich eine FileNotFoundException als Fehler. Danke für die Informationen.
 

Leroy42

Top Contributor
Ich wiederhole mich: Poste mal relevanten Code!

Taucht der Name D:\Documents and Settings\DLBWMRC\Projekt SAP\lagertest.txt

so in deinem Programm als String auf?

Code:
String pfad = "D:\Documents and Settings\DLBWMRC\Projekt SAP\lagertest.txt"

Falls ja, mußt du natürlich die Backslashes verdoppeln.
 

tritko1

Bekanntes Mitglied
Ich hoffe, du kannst was mit anfangen:

1. Main (in Paket logic)


Code:
 //Exportieren der IZBDaten für das Lager in einer Datei
		ExportDialog dia2 = new ExportDialog();
		String lagerpath = dia2.opendialog();
		Exportdata testex = new Exportdata();
		testex.setExportinfo(lagerpath, ";");
		try {
			testex.export(allData);
			System.out.println("Daten sind Exportiert worden!");
			Reader.lagerpath=lagerpath;
	 	} catch (IOException e) {
			e.printStackTrace();
		}


Code:
public class Reader 
{
	//Deklaration
	static int izbzaehler;
	String izblinie;
	String izblager;
	ArrayList al_linie=new ArrayList();
	ArrayList al_lager=new ArrayList();
	public static String lagerpath=new String();
	public static String liniepath=new String();
	
	public ArrayList completereadlager()
	{
		try
		{
			/*Bitte die richtige Datei einlesen, die bei der
			* Speicherung angegeben wurde. Statt D:\\ usw. sollte lagerpath stehen
			*/
			System.out.print(lagerpath);
			FileReader fr=new FileReader("D:\\Documents and Settings\\DLBWMRC\\Projekt     SAP Richter\\FS_IZB_test.txt");
			BufferedReader br=new BufferedReader(fr);
			String line=new String();
			
			while ((line = br.readLine()) != null)
			{
				//Deklarationen
				StringTokenizer token=new StringTokenizer(line, ";");
				izbzaehler++;
					
				/* Es wird aus der Datei gelesen und die 
			 	 * Werte werden in eine ArrayList geschrieben.
		     	 */	
					 
				for (int i=0;token.hasMoreTokens()==true;i++)
				{
					izblager=token.nextToken();
					al_lager.add(i, izblager);
				}//endfor
			}//endwhile
			br.close();
			System.out.print("Er hat es gelesen!");
			return al_lager;
		}//endtry
								
		catch (FileNotFoundException f)			
		{
			System.out.print("Datei wurde nicht gefunden");
			return null;
		}//endcatch
			
		catch (IOException io)
		{
			System.out.print("IO Fehler");
			return null;			
		}//endcatch
		
		catch (Exception e)
		{
			System.out.print("Fehler");
			return null;
		}
	}//end Method readlager;
 

Leroy42

Top Contributor
Ersetz mal
Code:
catch (FileNotFoundException f) { 
         System.out.print("Datei wurde nicht gefunden"); 
         return null; 
}//endcatch

durch

Code:
catch (FileNotFoundException f) { 
         System.out.println("Datei wurde nicht gefunden"); 
         System.out.println(f);
         return null; 
}//endcatch

und überprüfe, ob diese Datei auch existiert und nicht etwa
der Dateiname zu viele Leerzeichen beinhaltet.
 

tritko1

Bekanntes Mitglied
Ok, das Problem wird sein, das nur ein Backslash auftaucht. Wie kann ich aus einem zwei Backslashes machen?

Gibts dafür eine Methode?

Danke für deine Hilfe
 

The_S

Top Contributor
String#replace und String#replaceAll

Damit kannst du Zeichenketten durch andere ersetzen :) .
 

tritko1

Bekanntes Mitglied
Habe mal versucht, den Klassenstring im 2. Main auszugeben und da gibt er einen leeren String aus.

So, was mache ich jetzt? Der Code ist der gleiche geblieben....
 

thomator

Bekanntes Mitglied
Wozu sollen in einer Applikation eigentlich 2 main-methoden gut sein??? Willst Du das Programm auf verschiedenen Wegen starten? Und wenn ja, warum regelst Du den Unterschied nicht über die Parameterliste??

:bahnhof:
 

tritko1

Bekanntes Mitglied
Da die zweite Main nicht unbedingt ausgeführt werden muss, da dies die Print main ist.

Wie meinst du das mit der Parameterliste?
 

thomator

Bekanntes Mitglied
Was ich meine ist folgendes:
Die Main-Methode ist im Normalfall die Methode, die als Einsprungpunkt in eine Applikation für die JVM festgelegt wird, damit diese weiß, wo Sie denn anfangen soll.

Wenn Du 2 Main-Methoden definierst, und die eine von der anderen aufgerufen wird, dann muss eben diese aufgerufene Methode keine Main-Methode sein, sondern meinetwegen eine Klassen-oder Instanzmethode.
 

mephi

Bekanntes Mitglied
wenn du unbedingt eine 2. main methode aufrufen willst:

Code:
public class MainTest {
	
	public static void main(String args[]) {
		System.out.println("Ich bin die 1. main");
		String[] m = new String[1]; 
		m[0] = "main1";
		MainTest2.main(m);
	}
	
}

Code:
public class MainTest2 {
	
	public static void main(String[] args) {
		System.out.println("Ich bin die 2. main");
		System.out.println(" und komme von "+args[0]);
	}

}

würd ich das so machen
aber ich seh darin nicht viel sinn...
 
G

Guest

Gast
Ich denke, das ist ein grundsätzliches Verständnisproblem. Die Methode
Code:
public static void main(String[] args0){
}
ist keine Methode, die zu irgendeinem Objekt gehört. Das ist einfach nur DER Einsprungpunkt für die JVM in die Anwendung, nicht die 'Haupt-Methode' von irgendeiner Klasse.
 

tritko1

Bekanntes Mitglied
@mephi

Wie würdest du es denn machen? Sehe irgendwie keine andere (bessere) Möglichkeit, mein Problem zu lösen...
 

tritko1

Bekanntes Mitglied
Ok, du hast Recht.

Das wird wahrsch. das beste sein....

Das heißt aber, das ich vorher die 1. Main ausführen muss. Was muss ich denn noch beachten?

Wo soll denn dieses Attribut stehen? In der 1. Main oder in der 2. Main?
 

tritko1

Bekanntes Mitglied
Habe es versucht mit der Methodenübergabe. Habe in der ersten Main

Klasse Mainlogic, 1. Paket mit main

Code:
Reader lesen=new Reader();
String lagerpath = dia2.opendialog();
lesen.set_lagerpath(lagerpath);

Klasse Reader im anderen Paket

Code:
String lagerpath=new String();

public void set_lagerpath(String lagerpath)
	{
		this.lagerpath=lagerpath;
	}


Habe mal versucht, den lagerpath auszugeben, aber er zeigt mir nix an. Woran liegt denn das?
Ich verzweifele bald.

Danke im Voraus
 

Leroy42

Top Contributor
So langsam verstehe ich überhaupt nichts mehr.

Hier mal ein lauffähiges Beispiel:

Code:
class Statisch {
	public static String statisch;
}

public class Main1 {
	public static void main(String[] args) {
		Statisch.statisch = "Ich konmme von Main1";
		Main2.main(null);
	}

}

class Main2 {
	public static void main(String[] args) {
		System.out.println(Statisch.statisch);
	}

}

Jetzt erklär mal was in deinem Programm anders sein soll. ???:L
 

tritko1

Bekanntes Mitglied
Ich glaube, wir verstehen uns falsch. Das mit den Mains hast du
verstanden.

Das Problem liegt darin, das ich die 2. Main nicht unbedingt aufrufen
muss (das entscheidet der Endbenutzer. Die 2. Main ist für das
Drucken gedacht). Das kann er über Schaltflächen im Browser machen.

Wie ist denn das möglich, das er in der 2. Main trotzdem den Pfad übernimmt?
Wenn ich so nach deinem Code vorgehe, bringt er mir als Ergebnis null heraus
(Main2.main(null) wurde weggelassen).

Danke für die Hilfe.
 

Leroy42

Top Contributor
tritko1 hat gesagt.:
Wenn ich so nach deinem Code vorgehe, bringt er mir als Ergebnis null heraus
(Main2.main(null) wurde weggelassen).

Wenn du nach meinem Beispielcode kommt als Ausgabe
JVM hat gesagt.:
Ich konmme von Main1

Was um alles in der Welt soll "Main2.main(null) wurde weggelassen" bedeuten? :shock:

Wie hast du denn sonst die 2. Main-Methode aufgerufen? :autsch:

tritko1 hat gesagt.:
Die 2. Main ist für das
Drucken gedacht). Das kann er über Schaltflächen im Browser machen.

Wer kann das über welche Schaltflächen in welchem Browser machen? ???:L

Nach allem was du bis jetzt geschrieben hast verfestigt sich meine Meinung,
daß deine 2. Main in einer separaten JVM läuft und somit natürlich nichts von
Änderungen an statischen Variablen durch die 1. Main mitbekommen kannn.
 

tritko1

Bekanntes Mitglied
Also,

die 1. Main soll nicht die 2. Main aufrufen - ich glaube, das ich ne separate JVM. Ich führe erst die
erste Main aus + Ergebnis (drücken auf Run in Eclipse) und dann führe ich die zweite Main aus + Ergebnis
(drücken auf Run in Eclipse).

Wie kann ich denn den Pfad sonst herausfinden?
 

Leroy42

Top Contributor
tritko1 hat gesagt.:
Anders geht es nicht?

Nein!

Denn es sind nunmal 2 verschiedene Programme die
du ablaufen läßt. Und da das erste Programm ja beendet
wird, bevor das zweite startet, können sich die beiden
auch nicht anders (z.B. über Sockets) austauschen.

Es bleibt also nur die Möglichkeit, das das erste Programm
den Pfad irgendwo zwischenspeichert (Datei, Server,
Windows-Registry, ...) damit das 2. Programm ihn auslesen kann.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
S Timer vs ExecutorService: jeden Sonntag um 14.00 Uhr einen Task starten..? Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
P Gibt es einen anderen Weg um "{}" in IntelliJ zu schreiben? Java Basics - Anfänger-Themen 5
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
F Hat es noch einen Sinn, alte Versionen zu lernen Java Basics - Anfänger-Themen 45
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
N Kann man einen Iterator nur einmal verwenden Java Basics - Anfänger-Themen 5
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
FireHorses Einen Command erst nach einer Chateingabe aktivieren Java Basics - Anfänger-Themen 1
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Brauche ich while != -1, wenn ich immer einen BufferedReader verwende? Java Basics - Anfänger-Themen 8
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
N Gibt es hierfür einen Shortcut Java Basics - Anfänger-Themen 5
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
K Wie verneine ich einen Regex? Java Basics - Anfänger-Themen 2
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
D Einen boolischen Wert aus einer Methode in einer anderen Klasse aufrufen? Java Basics - Anfänger-Themen 11
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
Poppigescorn Mithilfe einer Arrayliste einen Notenspiegel ausgeben Java Basics - Anfänger-Themen 12
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
L GUI- wie cancel ich einen Timer? Java Basics - Anfänger-Themen 10
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
Devin Wo kann man einen Java Lehrplan finden? Java Basics - Anfänger-Themen 5
J Ist es möglich einen int Array wirklich leer zu initialisieren oder zu füllen? Java Basics - Anfänger-Themen 21
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
S First Time Mave: Wie ergänze ich einen Source-Folder? Java Basics - Anfänger-Themen 10
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
S Erste Schritte Button einen Wert zuweisen & diesen ausgeben Java Basics - Anfänger-Themen 2
M Auf einen Array innerhalb eines Objekts zugreifen Java Basics - Anfänger-Themen 5
V_Fynn03 Erste Schritte Einen Wert in ein TextField einfügen aus einer anderen Klasse Java Basics - Anfänger-Themen 3
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
F Hilfe für einen Anfänger! Java Basics - Anfänger-Themen 4
O Ziehen im Array um einen Schritt in eine einzige beliebige Richtung Java Basics - Anfänger-Themen 5
N Wie kann ich einen String wieder zusammensetzen und ausgeben lassen? Java Basics - Anfänger-Themen 9
T Fehlermeldung beim Versuch, einen String einzulesen Java Basics - Anfänger-Themen 4
J Wie kann ich z.B. einem int-Wert einen String-Wert zuweisen? Java Basics - Anfänger-Themen 2
steven789hjk543 Kann man mit Java und Eclipse einen Virus programmieren? Java Basics - Anfänger-Themen 13
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
T Einen Stern malen Java Basics - Anfänger-Themen 32
T Einen Stern malen Java Basics - Anfänger-Themen 2
L Files verschieben in einen Ordner Java Basics - Anfänger-Themen 87
A Mit JComboBox Ergebnis einen Integer aus einer anderen Klasse aufrufen. Java Basics - Anfänger-Themen 2
J Mit for Schleife einen String Rückwärts befüllen Java Basics - Anfänger-Themen 9
J Einen Buttonklick in Label anzeigen Java Basics - Anfänger-Themen 6
S Gibt es einen guten kostenlosen Online-kurs Java Basics - Anfänger-Themen 2
W Wie programmiere ich einen Potenzrechner? Java Basics - Anfänger-Themen 5
B ArrayList besitzt einen Wert zu wenig Java Basics - Anfänger-Themen 16
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
B Wie instanzisiert man einen Cursor richtig? Java Basics - Anfänger-Themen 3
S Interface (WindowBuilder) Panels in einen Frame einfügen Java Basics - Anfänger-Themen 10
J Aufruf einer Methode über einen String Java Basics - Anfänger-Themen 11
C Wie erstellt man einen Timer/Delay? Java Basics - Anfänger-Themen 1
C Wie kann ich einen User Input mit einer If-Anweisung verbinden? Java Basics - Anfänger-Themen 5
J Guten tag, Ich hoffe ihr habt einen schönen Sonntag und könnt mir helfen Java Basics - Anfänger-Themen 2
D Methoden 2 TextWatcher auf einen EditText Java Basics - Anfänger-Themen 4
I Datentypen input.nextCharAt(0) wirft einen Fehler Java Basics - Anfänger-Themen 3
C In einer Methode einen Array zurückgeben Java Basics - Anfänger-Themen 2
S Bestehendes Java Programm, einen festen Wert ändern Java Basics - Anfänger-Themen 17
F Variablen If else: Einer Variable einen Wert hinzufügen oder so? Java Basics - Anfänger-Themen 6
R Übergeben eines Array Strings an einen Spinner Java Basics - Anfänger-Themen 4
Bluedaishi Einen Betrag X auf X Tage verteilen Java Basics - Anfänger-Themen 14
D Einen Wert unter einen ActionListener weitergeben Java Basics - Anfänger-Themen 1
J In Java einen Ton erzeugen Java Basics - Anfänger-Themen 8
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
V Arrays die einen Termin speichen Java Basics - Anfänger-Themen 5
G Wie gebe ich einen Dateipfad in RandomAccessFile an? Java Basics - Anfänger-Themen 2
R Wie kann ich einen Objekt zu Instanzvariable speichern ? Java Basics - Anfänger-Themen 10
F In LinkedList einen Wert ersetzen oder neu einfügen Java Basics - Anfänger-Themen 7
S Das Anführungszeichen(") Zeichen in einen String setzen Java Basics - Anfänger-Themen 1
P Einen String mittig zeichnen? Java Basics - Anfänger-Themen 1
J Erste Schritte Wie kann ich einen String in eine If einbauen :)? Java Basics - Anfänger-Themen 12
G Wie kann ich einem StringBuilder einen int Wert formatiert hinzufügen? Java Basics - Anfänger-Themen 8
P Einen Ordner mit Dateien hochladen [FTP] Java Basics - Anfänger-Themen 2
OlafHD Einen String an eine Klasse übergeben Java Basics - Anfänger-Themen 2
OlafHD Gibt es einen Laufbalken? Java Basics - Anfänger-Themen 2
Silvascus Inhalt eines externen Textdokuments an einen String übergeben Java Basics - Anfänger-Themen 2
B OOP Über einen AVL-Baum iterieren (NullPointer) Java Basics - Anfänger-Themen 5
G Erste Schritte Wie kann ich einen zurückgegebenen Wert ausgeben Java Basics - Anfänger-Themen 4
W Wie kann man diesen Code in einen Code umwandeln, der folgendes können sollte? Java Basics - Anfänger-Themen 1
J App auf einen Webserver laden Java Basics - Anfänger-Themen 14
E Was ergibt trim() auf einen leeren String Java Basics - Anfänger-Themen 3
B Schleife über einen Container Java Basics - Anfänger-Themen 7
X Quelltext einen Tic Tac Toe Spiels erklären Java Basics - Anfänger-Themen 4
M Panel erstellen, welches ein Control erhält. Ausgabe soll über einen Stream erfolgen. Java Basics - Anfänger-Themen 0
D Klassen Gesucht: Einfache Beispiel-Klasse für einen Datentyp Java Basics - Anfänger-Themen 7
B Wer kennt einen Link für vollständiges, leichtverständliches "Game of Life"? Java Basics - Anfänger-Themen 1
A Hat jemand einen ratschlag, wie java beim replaceALL eine geschweifte klammer erkennt ? Java Basics - Anfänger-Themen 5
L Mit rekursiven Aufrufen einen Stack emulieren Java Basics - Anfänger-Themen 1
N Benötige eine Alternative für einen GOTO Befehl Java Basics - Anfänger-Themen 2
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben