Exe innerhalb einer Jar starten

Status
Nicht offen für weitere Antworten.

dragon456

Mitglied
Hi an alle,

Ich habe schon die suche genutzt aber nichts gefunden was mir helfen könnte.

Wie ihr sicherlich wisst ist es nicht möglich eine Verknüpfung mit Java zu erstellen. Deshalb habe ich mir kleines Programm mit AutoIt geschrieben. Dieses kann man wunderbar in eine exe verwandeln. Nun zu meinem Problem:
Mein Java Programm habe ich in eine Jar Datei gepackt, in der sich auch die exe befindet. Wie kann ich nun innerhalb dieser Jar Datei die Exe ausführen???


Ich habe es schon damit probiert, ohne erfolg:

Code:
Runtime.getRuntime().exec("Program.exe");

Aber es wird einfach nicht ausgeführt. Was mache ich falsch oder kann man keine Datei innerhalb der Jar Datei ausführen


Gruß dragon456
 
IMHO solltest du kein Programm innerhalb einer JAR ausführen können. Du könntest das Programm aber in ein temporären Ordner entpacken und von dort aus ausführen.
 
Hi,

erstmal danke für deine Antwort. :applaus: :applaus:

Des ist echt eine geniale Idee, warum bin ich nicht darauf gekommen. ???:L
Anscheinend muss man sich ab und zu von anderen inspirieren lassen :idea:

Werd ich gleich mal ausprobieren

Gruß dragon456
 
Hi,

jetzt hab ich wieder nen problem :cry:

wie kann ich die Datei aus der Jar Datei kopieren ???:L


Gruß dragon456
 
Hi,

heut steh ich total aufm Schlauch :roll:
Ich hab jetzt im Forum, nach JarInput- und JarOutputStreamern geschaut, komm aber irgendwie nich klar.
Kannst du mir vielleicht ein Beispiel geben ??


Gruß dragon456
 
Code:
	public File getFileFromJar(String location)
	{
		File file = null;
		InputStream is = getClass().getClassLoader().getResourceAsStream(location);
		String filename = location.substring(location.lastIndexOf('/'));
		FileOutputStream fos = null;
		
		try {
			 byte  buffer[] = new byte[1024];

				file = new File(filename);
				fos = new FileOutputStream(file);
				int bytes = 0;
				
				while( (bytes = is.read(buffer)) != -1)
				{
					fos.write(buffer, 0, bytes);
				}
				
		    	fos.flush();							
		    	buffer = null;
		} catch (IOException e) {
			e.printStackTrace();
		}
		finally
		{
			if(fos != null)
				try {fos.close(); fos = null;} catch (IOException e) {e.printStackTrace();}
			if(is != null)
				try {is.close(); is = null; } catch (IOException e) {e.printStackTrace();}
			System.gc();	
		}
		
		return file;
	}

als location muss der relative Pfad eingesetzt werden
 
Hi,

erstmal danke für eure antworten

@Verjigorm:

Bei folgender Zeile (15)kommt immer eine NullPointerException.

Code:
 while( (bytes = is.read(buffer)) != -1)


Ich verstehe das nich mehr bin alles durchgegangen auch der Pfad stimmt, er sagt ja nich, dass er die Datei nicht finden kann.

@ps

gut zu wissen werd ich nachher mal ausprobieren


Gruß dragon456
 
Dann liefert dieser Anweisung
Code:
InputStream is = getClass().getClassLoader().getResourceAsStream(location);
wohl null zurück, was lt. Doku dann passiert, wenn die Ressource nicht existiert.

dragon456 hat gesagt.:
Ich verstehe das nich mehr bin alles durchgegangen auch der Pfad stimmt, er sagt ja nich, dass er die Datei nicht finden kann.
Wann sollte "er" das auch sagen?
 
Hi,

habe nun mein Problem gelöst.
In folgender Zeile:

Code:
 InputStream is = getClass().getClassLoader().getResourceAsStream(location);

habe ich einfach den Methodenaufruf "getClassLoader()" entfernt. Danach siehts so aus:

Code:
 InputStream is = getClass().getResourceAsStream(location);

und bei mir funktionierts wenn ich als location folgendes eingebe:

"/Programm.exe"

:applaus: :applaus: Danke an alle die mir geholfen haben :applaus: :applaus:


Gruß dragon456
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben