ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
2079
2079
EMPFEHLEN
-
Hallo,
ich habe hier ein kleines Problem...
Die folgende Funktion soll eigentlich nichts anderes machen als eine Datei(in dem Fall nen Skript) zu starten und den Rückgabewert zu übernehmen(der Teil ist noch nicht integriert).
Das funktioniert im Eclipse auf WinXP auch. Allerdings hab ich das jetzt bei einem Freund unter Vista laufen lassen und bei ihm wird das Skript nicht gestartet.
Es kommt zu einer IOException.
Ich bin ein bissl ratlos woran das liegen mag.
Danke schon mal für eure Hilfe!
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
public boolean methode() { boolean result = false; try { // ProcessBuilder builder = new ProcessBuilder( "wscript", "skript.vbs" ); ProcessBuilder builder = new ProcessBuilder("rundll32", "url.dll", "FileProtocolHandler", "skript.vbs"); File file = new File(this.getClass().getResource("/").getPath()); builder.directory(file); process = builder.start(); process.waitFor(); if (process.exitValue() == 0) { result = true; } } catch(IOException exception) { } catch(InterruptedException error) { } return result; }
Geändert von Oliver Gierke (15.05.08 um 08:37 Uhr) Grund: Code Tags spendiert
-
Hi,
soweit ich weiß braucht man bei Vista immer eine Bestätigung um ein neues Programm zu starten. Wenn du also ein Script ... hier skript.vbs ausführst, dann müsste Vista das blocken oder liege ich da falsch?
Habe zwar kein Vista, aber ich kenne jemanden
GReeze ChimairaWenn mein Beitrag hilfreich war, dann bitte ich diesen zu bewerten!
-
so kleines update... es muß wohl ein fehler im code sein.
Der selbe Code führt zum gleichen Fehler auf einem anderen XP Rechner.
Ich bin wirklich überfragt woran das liegt.
-
14.05.08 14:04 #4
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 900
Du solltest auch die Input/Outputstreams abfangen und ggf. closen wenn du sie nicht brauchst....Ansonsten was bringt er da für ne Ausgabe?
Geändert von Anime-Otaku (14.05.08 um 14:06 Uhr)
Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
-
um die streams wollte ich mich (wenn überhaupt nötig kümmern) sobald das skript überhaupt gestartet wird auf anderen rechnern.
Die genaue Fehlermeldung werde ich posten sobald ich sie von den anderen bekomme.
Ist denn an dem Code den ich gepostet hab etwas falsch?
EDIT:
Die auswertung von IOException.getMessage() und getCause()
getMessage()
Cannot run program "rundll32" (in directory "C:\Program%20Files\eclipse\Eclipse%20Aufgaben\Process"): CreateProcess error=267, Der Verzeichnisname ist ungültig
getCause()
java.io.IOException: CreateProcess error=267, Der Verzeichnisname ist ungültigGeändert von Ashaman (14.05.08 um 17:56 Uhr)
-
15.05.08 08:05 #6
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 900
meine spontane Idee:
das
File file = new File(this.getClass().getResource("/").getPath());
versuch mal ohne das getPath()....schließlich soll es ja eine URL bleiben
Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
-
15.05.08 09:15 #7
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo,
gibts den Pfad überhaupt in deinem System?
Weiterhin setzt du mit directory Explizit das aktuelle Working Directory. Wenn das System dann dort rundll32.exe sucht, wird es natürlich nicht gefunden, sofern es nicht da liegt. Gib doch mal den vollqualifizierten Pfad zu rundll32.exe in deinem Command String an. Weiterhin wird dein Pfad als URL behandelt (deshalb die %20) die mit der Endung .vbs Assozierte Anwendung wscript.exe /cscript.exe erwartet einen "richtigen" Pfad.
Starte das skript doch mal direkt mit "start cmd /c cscript.exe d:\\temp\\bubu.vbs".
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
15.05.08 09:49 #8
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 900
rundll32.exe ist standardmässig in der Path Systemvariablen zu finden ....daher sollte es ohne Probleme gefunden werden..oder?
Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
-
15.05.08 09:51 #9
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo,
kommt drauf an:
Code :1 2 3 4 5 6
H:\>d:\temp\rundll32.exe Der Befehl "d:\temp\rundll32.exe" ist entweder falsch geschrieben oder konnte nicht gefunden werden. H:\>rundll32.exe
Aber es sieht ja so aus, als ob er rundll32 finden kann. Liegt wohl wirklich daran das der Script Interpreter den Pfad zum Skript als richtigen Verzeichnispfad und nicht als URL erwartet. Mit cscript sollte es gehen.
schau mal hier:
http://www.tutorials.de/forum/java/1...s-beenden.html
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/** * */ package de.tutorials; /** * @author Thomas.Darimont * */ public class PricessBuilderExample { /** * @param args */ public static void main(String[] args) throws Exception { ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "cscript", "d:\\temp\\hello.vbs"); Process process = processBuilder.start(); int exitValue = process.waitFor(); System.out.println(exitValue); } }
Code :1 2 3
D:\>type temp\hello.vbs msgbox "Hallo"
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Vielen dank für eure denkanstöße

Das problem lag haupsächlich daran dass bei leerstellen im pfadnamen (die %20) der pfad nicht gefunden werden konnte. Auf einen festen pfad wollte ich mich nicht einlassen also hab ich es übergangsweise mit einem relativen pfad zum jar file gelöst.
Dadurch ist die directory angabe völlig weggefallen da man ja für rundll bzw wscript diesen nicht brauch.
Ich werd aber eure vorschläge noch mal angehen sobald ich zur verfeinerung komme
Danke nomma!
Ähnliche Themen
-
Processbuilder mit timeout
Von Stiffler66 im Forum Java GrundlagenAntworten: 5Letzter Beitrag: 05.02.10, 11:58 -
ProcessBuilder
Von IroNHeinZ im Forum Java GrundlagenAntworten: 7Letzter Beitrag: 20.12.09, 14:59 -
ProcessBuilder - cmd fuehrt zu Endlosschleife
Von Gwaihirr im Forum Java GrundlagenAntworten: 2Letzter Beitrag: 19.12.09, 22:12 -
ProcessBuilder, src - bin?
Von flashray im Forum JavaAntworten: 4Letzter Beitrag: 04.06.07, 21:12 -
Probleme mit Processbuilder
Von Daelrik im Forum JavaAntworten: 4Letzter Beitrag: 30.09.06, 15:54





Zitieren

Login




