JVM gestartet via Createprocess () Verliert Classpath-Bibliothek
Frage
ich starten Sie die folgende Befehlszeile (Prozess) von einem Windows-VC ++ 6-Programm mit Createprocess (oder _spawnv ()):
- java -cp c: \ dir \ updates.jar; c: \ dir \ main.jar Haupt
und Klasse Updates in updates.jar (overiding einige in main.jar) gelesen oder wurde nicht gefunden. Es ist, als ob die updates.jar Bibliothek nicht gefunden oder gelesen werden.
Wenn ich die gleiche Zeile aus einer Verknüpfung starten, oder über die Befehlszeile richtig, alles ist gefunden und korrekt ausgeführt.
Wenn ich eine JVM von der Kommandozeile starten, halten Sie es ausgeführt wird, und starten Sie DANN die ausführbare Stub (oben), dann funktioniert auch alles OK. (Dies macht es aussehen wie das Problem etwas Dateirechte ist).
würde Einsicht sehr geschätzt werden!
- Edward
Lösung
Versuchen Dienstprogramm Microsoft FileMon, um herauszufinden, was los ist. Stellen Sie die umfassen Filter auf „Updates“ konzentrieren auf das Problem.
http://technet.microsoft.com/en-us/sysinternals /bb896642.aspx
Andere Tipps
Haben Sie diese auf einer anderen Maschine versucht? Ein weiteres O? Welche JVM verwenden Sie? Haben Sie unterschiedliche JVMs versucht?
Können Sie uns mit einem minimalen Beispiel schaffen, die das Problem demonstriert?
Danke jdigital
Ich habe versucht, FileMon und es zeigte mir, was ich falsch mache. Die ausführbare calling Createprocess () hatte eine nicht geschlossene Datei-Handle von einem Versuch, updates.jar früher das Update JAR zu kopieren. Bad-Code, der in der Produktionsumgebung funktioniert, aber nicht in der Testumgebung.