VLC stirbt, wenn es von innerhalb von Java aufgerufen wird

8

Ich habe ein Problem, das ich in diesem Moment nicht einmal richtig untersuchen kann. Irgendwelche Empfehlungen, wie ich mehr Informationen bekommen kann, sind willkommen und geschätzt.

Meine Firma verkauft im Kern ein Produkt mit einem WinXP-PC. Eine der Aufgaben des Produkts ist es, einen Video-Player bei Bedarf zu starten - in diesem Fall VLC. (Um genau zu sein, VLC 0.8.6d; es ist einige Jahre veraltet, aber ein Upgrade ist aus mehreren Gründen problematisch.) Die Anwendung, die für das Starten des Players und das Ausführen vieler, vieler anderer Aufgaben verantwortlich ist, ist in Java geschrieben.

Ich habe einen Prüfstand neben meinem Schreibtisch. Es hat früher gut funktioniert. Aber aus irgendeinem Grund gibt es jetzt ein "Send Error Report" -Fenster, wenn die Java-App versucht, VLC zu starten: "VLC Media Player hat ein Problem festgestellt und muss schließen ...." Sie kennen das.

Klar, ich habe etwas getan, was die Dinge durcheinander gebracht hat. Das Problem ist, ich weiß weder, was es sein könnte noch wie ich es beheben würde.

Sachen, die ich kenne:

  • Es ist kein Code-Bug. Ich benutze die gleiche Software auf meinem Entwicklungsrechner, und dieses Problem tritt nicht auf.
  • Es ist nicht die VLC-Installation, noch ist es eine fehlerhafte Video-Datei. Wenn ich den Befehl einschließe, der verwendet wird, um ihn von Java aus zu starten und diesen Befehl manuell von einem "cmd" -Fenster aus einzugeben, funktioniert es einwandfrei.
  • Es ist nicht dieser hinterhältige bastich-Bug, bei dem Java Sie bestraft, wenn Sie STDERR und STDOUT nicht manuell entladen, wenn Sie einen Systemanruf tätigen. Ich habe das abgedeckt.
  • Ich bekomme keine Fehlermeldungen oder Ausgaben, wenn es fehlschlägt; es scheitert einfach und gibt mir das Popup-Fenster.

Ich bin ratlos. Empfehlungen dafür, was es sein könnte oder wie ich herausfinden kann, was es ist, sind sehr willkommen.

    
BlairHippo 27.01.2011, 20:11
quelle

3 Antworten

1

Nun, ich bin nicht vertraut mit Java und VLC, aber ich würde die folgenden Dinge tun:

  1. Überprüfen Sie, ob Sie auf beiden Desktops identische Java Virtual Machines haben. Nur für den Fall ...
  2. Überprüfen Sie die Umgebungsvariablen des Prozesses. Sie hängen vom Elternprozess ab. Vielleicht verwendet VLC einige von ihnen.
  3. Versuchen Sie, den Absturz mit nativem Debugger wie WinDbg zu debuggen. Vielleicht gibt dir der Call-Stack mehr Ideen.

Viel Glück!

    
Eugene 28.01.2011 12:04
quelle
0

Meine Vorschläge:

  1. Erstellen Sie eine einfache Java-App, die VLC
  2. startet
  3. Verwenden Sie Ihre App, um ein einfaches Befehlszeilen-Windows-Programm zu starten
  4. Verwenden Sie Ihre App, um ein komplexes Programm zu starten
  5. Überprüfen Sie, ob ein Speicherbeschränkungsproblem vorliegt. Erhält VLC zu wenig Arbeitsspeicher?

Das klingt wirklich nach einem Speicher- / Umgebungsproblem.

    
Pat 28.01.2011 16:25
quelle
0

Eine Reihe von Dingen, die ich versuchen würde

  1. Stellen Sie sicher, dass sowohl Test- als auch Entwicklungsmaschinen in jeder Hinsicht identisch sind, das Betriebssystem (wenn möglich von der gleichen OS-Festplatte installiert), die gleiche JVM-Version, die gleiche Speicherzuweisung für JVM (Sie kennen die -X-ms-Komponenten). Meine Angst ist nicht bei Java / JVM per se, sondern bei Windows.
  2. Stellen Sie sicher, dass Sie zum Beispiel Notepad aus einer Java-App und dann etwas wie Windows Media Player oder MS Word zu Mittag essen können.
  3. Versuchen Sie, andere Versionen von VLC zu starten, um zu sehen, ob es sich um ein Problem mit der VLC-Version handelt.
  4. Versuchen Sie schließlich, die Testbox zu bereinigen und neu zu installieren (mit Windows können Sie nie sagen, eine Neuinstallation könnte es einfach machen !!)
quelle

Tags und Links