Zwischenablage ist nach Programm beenden leer

JavaRentner

Aktives Mitglied
Guten Abend
habe meinString mit:
Java:
Clipboard clip=Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection selection=new StringSelection(meinString);
clip.setContents(selection,null);
in die Zwischenablage gesetzt.
Soweit, sogut.
Jetzt kann ich den Inhalt von meinString überall einfügen... OK!

Wenn ich nun mein Programm beende, ist die Zwischenablage LEER!
Gibt es denn eine Möglichkeit mein Java-Programm zu beenden, OHNE dass die Zwischenablage geleert wird?

Vielen Dank.
 
Zuletzt bearbeitet:
Das wundert mich auch ein bisschen. Habe bisschen gegoogelt. Auch unter Windows ist das so, dass wenn man da in das SystemClipboard was hinzufügt, es weg ist, wenn Java beendet wird.
 
Kann ich unter Win10 nicht bestätigen:
Java:
import java.awt.*;
import java.awt.datatransfer.*;
import java.util.UUID;

public class Test {
    public static void main(String[] args) {
        String meinString = UUID.randomUUID().toString();
        Clipboard clip=Toolkit.getDefaultToolkit().getSystemClipboard();
        StringSelection selection=new StringSelection(meinString);
        clip.setContents(selection,null);
    }
}
Das Programm läuft durch, die JVM beendet und der String befindet sich in der Zwischenablage.
 
Sorry,
Mein OS:
Description: Linux Mint 21.3
Release: 21.3
Codename: virginia

Starten tu ich so:
anwendungsname -jar /pfad/meineAnwendung.jar

anwendungsname ist eine umbenannte kopie von java!
somit wird "anwendungsname" als Prozessname angezeigt und nicht java.

habe es aber auch mit java -jar /pfad/meineAnwendung.jar erfolglos versucht.
Vielen Dank.
 
Zuletzt bearbeitet:
Problem in etwa gelösst!

Problem tritt nur auf, wenn es aus Eclipse heraus gestartet wird.
Warum das wohl so ist?

Wenn ich es aus dem Terminal oder mit einem Starter starte funktioniert es.
Trotzdem vielen Dank.
 
Zu früh gefreut... 🙁

Zwischenablage ist LEER wenn die Anwendung geschlossen wird!
Egal wie ich sie starte...

Neuer Versuch:
Anstatt in die Zwischenablage schreibe ich eine temporäre Datei.
  1. Starte die Anwendung mit einer Bash welche ich am laufen halte. (ohne & am Ende des Befehls)
  2. Die anwendung schreibt die gewünschten Infos eine temporäre Datei. (nicht in die Zwischenablage)
  3. Nach beenden der Anwendung lese ich die temporäre Datei mit dem noch laufenden Bash-Skrip und füge den Inhalt mit:
  4. cat "Pfad/Datei" | xclip -selection clipboard in die Systemzwischenablage und beende das Bash-Skrip.
Das funktioniert jetzt.

Meine Frage:
  • Kann java wirklich nicht in die OS-Zwischenablage schreiben?
  • Oder, warum wird die Zwischenablage geleert, wenn das Java-Programm geschlossen wird?
  • Ist das ein Bug?
Ich verstehs nicht... 😕
Vielen Dank.
 
Das ist halt das Standard Verhalten unter Linux. Das hat nichts mit Java zu tun.

Wenn es nicht so willst, dann nutz ein Clipboard Manager wie copyq.
Das sollte dann schon das gewünschte Verhalten bewirken.
 
Danke, hab es jetzt begriffen.
Nutze jetzt beides:
sowohl:
Java:
Clipboard clip=Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection selection=new StringSelection(sollPFD);
clip.setContents(selection,selection);
wie auch:
  1. Starte die Anwendung mit einer Bash welche ich am laufen halte. (ohne & am Ende des Befehls)
  2. Die anwendung schreibt die gewünschten Infos eine temporäre Datei. (nicht in die Zwischenablage)
  3. Nach beenden der Anwendung lese ich die temporäre Datei mit dem noch laufenden Bash-Skrip und füge den Inhalt mit:
  4. cat "Pfad/Datei" | xclip -selection clipboard in die Systemzwischenablage und beende das Bash-Skrip.
Solange die Anwendung läuft, kann ich das Clipboard von Java nutzen.
Schliesse ich die Anwendung, wird mir mit: "cat "Pfad/Datei" | xclip -selection clipboard"
der Inhalt der Datei in die OS Zwischenablage geschrieben uns die Datei "Pfad/Datei" gelöscht.

Funktioniert in Linux und Mac wie beschrieben (voraussetzung xclip ist installiert) und in Windows mit entsprechenden Commands ebenfalls.

Problem Gelösst!
Vielen Dank
 

Zurück
Oben