Ich habe eine einfache Java-Klasse, die ich programmgesteuert ausführen möchte. Dies ist im Grunde ein Video-Player. Es wird auch zusammen mit meiner Webanwendung in Tomcat bereitgestellt. Dies sollte nach einem Klick auf einen bestimmten Link ausgeführt werden. Vom Controller hier ist, wie ich es laufenStandalone-Anwendung in Tomcat
neuen Thread (() -> { VideoPlayer.main (new String [] {}); }). Start();
Es funktioniert gut. Aber jedes Mal, wenn ich den Video-Player schließe, wird Tomcat ebenfalls beendet. Irgendwelche Ideen, wie man das korrigiert?
Sie haben Recht! Wenn ich diese Codezeile entfernt habe, wird videoCanel.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) nicht mehr beendet, wenn der Player geschlossen wird. Dieser Player läuft jedoch immer noch im Hintergrund. Gibt es eine Möglichkeit, diesen Prozess programmatisch zu beenden? –
Auch ich weiß, dass dies sehr hässlich ist. Ich kann mir keine Lösung vorstellen, bei der ich einen Live-Feed von der IP-Kamera in einer Webanwendung, die in Javafx Webview eingebettet ist, abspielen kann. WebView unterstützt keine Plugins und Applets. Hier ist eine SO Frage, die ich mit einigen Details des Projekts http://stackoverflow.com/questions/41262445/embed-ip-camera-feed-on-web-page-and-javafx-webview gepostet habe, die Sie überprüfen möchten gib mir auch Ideen. Vielen Dank :) –
Um den Media Player zu beenden, müssen Sie alle verschiedenen Threads herunterfahren. Es ist praktisch unmöglich, den GUI-Thread herunterzufahren (was kein Daemon-Thread ist), und wenn Sie ihn starten würden, könnten Sie ihn möglicherweise nicht erneut starten. Die beste Strategie wäre, einen völlig neuen Prozess zu starten und dann "EXIT_ON_CLOSE" zu verwenden. –