powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема Copy/Past windows -> X11
13 сообщений из 13, страница 1 из 1
Проблема Copy/Past windows -> X11
    #38524951
Igor-65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток !

Запускаю свое свинговое приложение под X-ми.

/usr/local/jdk/bin/java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)


При попытке скопировать текстовую строчку в виндовой тулзе (например, в far) и вставить в JTextField получаю:

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Failed to retrieve atom name.
	at sun.awt.X11.XlibWrapper.XGetAtomName(Native Method)
	at sun.awt.X11.XAtom.getName(XAtom.java:186)
	at sun.awt.X11.XDataTransferer.getTargetNameForAtom(XDataTransferer.java:166)
	at sun.awt.X11.XDataTransferer.getNativeForFormat(XDataTransferer.java:155)
	at sun.awt.datatransfer.DataTransferer.getFlavorsForFormats(DataTransferer.java:804)
	at sun.awt.datatransfer.ClipboardTransferable.<init>(ClipboardTransferable.java:89)
	at sun.awt.X11.XClipboard.getContents(XClipboard.java:106)
	at javax.swing.TransferHandler$TransferAction.actionPerformedImpl(TransferHandler.java:1747)
	at javax.swing.TransferHandler$TransferAction.access$700(TransferHandler.java:1684)
	at javax.swing.TransferHandler$TransferAction$1.run(TransferHandler.java:1707)
	at javax.swing.TransferHandler$TransferAction$1.run(TransferHandler.java:1705)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at javax.swing.TransferHandler$TransferAction$2.run(TransferHandler.java:1722)
	at javax.swing.TransferHandler$TransferAction$2.run(TransferHandler.java:1720)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at javax.swing.TransferHandler$TransferAction.actionPerformed(TransferHandler.java:1719)
	at javax.swing.text.JTextComponent.invokeAction(JTextComponent.java:1513)
	at javax.swing.text.JTextComponent.paste(JTextComponent.java:1491)
	at javax.swing.text.DefaultEditorKit$PasteAction.actionPerformed(DefaultEditorKit.java:1363)
	at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1664)
	at javax.swing.JComponent.processKeyBinding(JComponent.java:2878)
	at javax.swing.JComponent.processKeyBindings(JComponent.java:2925)
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2841)
	at java.awt.Component.processEvent(Component.java:6282)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1895)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:762)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1027)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:899)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:727)
	at java.awt.Component.dispatchEventImpl(Component.java:4731)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Window.dispatchEventImpl(Window.java:2719)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:694)
	at java.awt.EventQueue$3.run(EventQueue.java:692)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:708)
	at java.awt.EventQueue$4.run(EventQueue.java:706)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
	at java.awt.Dialog.show(Dialog.java:1082)
	at java.awt.Component.show(Component.java:1651)
	at java.awt.Component.setVisible(Component.java:1603)
	at java.awt.Window.setVisible(Window.java:1014)
	at java.awt.Dialog.setVisible(Dialog.java:1005)
	at ttk.common.standalone.gui.frame.MainClientFrame.open_Dlg_search_CAO(MainClientFrame.java:556)
	at ttk.common.standalone.gui.frame.MainClientFrame.access$300(MainClientFrame.java:37)
	at ttk.common.standalone.gui.frame.MainClientFrame$9.actionPerformed(MainClientFrame.java:328)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2719)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:694)
	at java.awt.EventQueue$3.run(EventQueue.java:692)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:708)
	at java.awt.EventQueue$4.run(EventQueue.java:706)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)   



куда копать ???
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38524975
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю что копать некуда. Содержимое clipboard это не только текст, то ещё и метаинформация, которая под виндой и X-ами разная. Вот и падает из-за несовместимости.
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38524977
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь немного инфы почему так происходит
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6322854
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38525324
Igor-65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
доп. инфа:

для соединения с удаленным linux используется RDP (X11rdp ).

на стороне linux открываю текстовый файл.
в своей виндовой сессии, например в excel копирую нечто в буфер обмена (ctrl-v)
в удаленной сесии вставляю в текстовый файл (ctrl-c)

все вставляется замечательно !

не работает вставка в моем java-приложении...

может, есть простое решение ?
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38525346
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor-65может, есть простое решение ?
Может. Но я не вижу.
Вариантов пока только два
1) KDE
2) Исправить в OpenJDK самому, чтобы вместо ошибки попробовать интерпретировать clipboard как текст.
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38525363
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там ещё в stderr должно печататься сообщение
fprintf(stderr, "Atom was %d\n", (int)atom);

Не уверен что поможет, некогда сейчас дальше код Java ковырять. Но можно попробовать взять sun.awt.X11.XAtom и зарегать через рефлексию нужный Atom.
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38525513
Igor-65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть такое в stderr:

Atom was 0
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38525770
Igor-65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пофиксил. но может где-то в другом месте всплыть.

в классе XAtom

добавил обработку исключения

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public final String getName()
  {
    if (this.name == null)
    {
      XToolkit.awtLock();
      try
      {
        [color=red]try[/color]
            this.name = XlibWrapper.XGetAtomName(this.display, this.atom);
        [color=red]} catch (Throwable te) {
            this.name = "null";
        }[/color]
      }
      finally
      {
        XToolkit.awtUnlock();
      }
      register();
    }
    return this.name;
  }
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38525776
Igor-65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неправильно вставил ...
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38525780
Igor-65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
красным - добавленные строчки

public final String getName()
{
if (this.name == null)
{
XToolkit.awtLock();
try
{
try {
this.name = XlibWrapper.XGetAtomName(this.display, this.atom);
} catch (Throwable te) {
this.name = "null";
}
}
finally
{
XToolkit.awtUnlock();
}
register();
}
return this.name;
}
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38525853
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor-65,

Так paste совсем не будет работать? Или работает?
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38525924
Igor-65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
работает ....
причем пробовал копировать в JTextField стандартный.
В другом месте был свой код по обработке Past (Копирование группы ячеек exel) - тоже работает.
Единственно, что потребовалось дополнительно сделать - так это более честный обработчик для данных из excel (доп. обработка "пустых" полей). Передаются не совсем так как win->win.
Причем, свое слово "null" я нигде не встретил. Я в конце концов его заменил на "".
...
Рейтинг: 0 / 0
Проблема Copy/Past windows -> X11
    #38525994
Igor-65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подробно пока не исследовал.
предположение такое:
винда при Copy создает несколько наборов для разных DataFlavor.
мне нужен только DataFlavor.stringFlavor.
если при передаче данных для других DataFlavor что-то не так, то мне наплевать.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема Copy/Past windows -> X11
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]