Я установил eclipse (4.10) на свой компьютер с Linux (KDE Neon 5.15), и все работает достаточно хорошо, за исключением JavaDoc. Всякий раз, когда я просматриваю JavaDoc-hover, я получаю простое текстовое представление, а внизу написано
NOTE: The SWT Browser widget could not be created. This fallback mode doesn't show links and misses other functionality.
Дальнейшее исследование привело меня к созданию минимального SWT-примера с использованием виджета SWT Browser:
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class BrowserTest {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Browser b = new Browser(shell, SWT.NONE);
b.setUrl("www.google.com");
shell.open();
while (!shell.isDisposed()) {
display.readAndDispatch();
display.sleep();
}
display.dispose();
}
}
Попытка выполнить этот код не удалась с исключением
Exception in thread "main" org.eclipse.swt.SWTError: No more handles [Browser style SWT.MOZILLA and Java system property org.eclipse.swt.browser.DefaultType=mozilla are not supported with GTK 3 as XULRunner is not ported for GTK 3 yet]
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.browser.MozillaDelegate.<init>(Unknown Source)
at org.eclipse.swt.browser.Mozilla.create(Unknown Source)
at org.eclipse.swt.browser.Browser.<init>(Unknown Source)
at Main.main(Main.java:31)
что ясно показывает, что система действительно не может создать виджет браузера. Хотя на этот раз сообщение об ошибке более информативно.
Я также попытался установить стиль виджета браузера на SWT.MOZILLA, что дало то же сообщение об ошибке (как и ожидалось), и использование SWT.WEBKIT также вызвало ту же ошибку, хотя и без пояснительного текста (поэтому только org.eclipse.swt.SWTError: No more handles).
@muru Я бы не назвал это «общей отладкой», код есть только там, поскольку он помог добраться до корня исходной проблемы. Вопрос, на который здесь дается ответ, заключается в том, почему eclipse не будет правильно отображать JavaDoc при запуске в Linux. Так что я бы не сказал, что это считается отладкой.




Из сообщения об ошибке и некоторых дальнейших исследований становится ясно, что виджет браузера SWT использует программное обеспечение XULRunner для рендеринга HTML. Как говорится в сообщении об ошибке, это не было перенесено на GTK3 (пока) и поэтому не может использоваться. Однако затмение по умолчанию запускается в режиме GTK3, так что это основная проблема.
Попыткой решить эту проблему может быть перевод eclipse в режим GTK2 (см. здесь), но дальнейшее изучение Часто задаваемые вопросы о затмении показывает, что, начиная с Eclipse 4.8 и выше, XULRunner вообще больше не поддерживается.
Поэтому возможность использовать стиль SWT.MOZILLA для создания браузера кажется недействительной в этих версиях. Вместо этого нужно сосредоточиться на том, чтобы заставить работать стиль SWT.WEBKIT. Для этого другое посещение в Вопросы-Ответы показывает, что
WebKitGTK 1.2.0 or newer must be in the library load path.
Поэтому я пошел дальше, нашел соответствующую библиотеку и установил ее (libwebkitgtk-3.0-0 в моем случае).
После установки этого пакета выше SWT-snipped запустился нормально, и после перезапуска eclipse JavaDoc вернулся к полной функциональности.
Если это не работает для вас напрямую, возможно, вам придется соответствующим образом установить переменную org.eclipse.swt.browser.DefaultType. Согласно этот вопрос, это можно сделать, убедившись, что -Dorg.eclipse.swt.browser.DefaultType=webkit находится в файле eclipse.ini.
Для Arch Linux мне пришлось установить webkit2gtk из AUR, чтобы он заработал.
Кстати, это в официальных репозиториях (pacman -S webkit2gtk), а не в AUR (уже)
Хорошо для тех, кто проголосовал за этот вопрос как OT (или думает об этом): проблема более или менее специфична для Linux (это, безусловно, связано с ее решением). Так где же еще разместить такой вопрос, как не здесь? Это происходит в Linux и исправляется внутри Linux (а не внутри самого eclipse). Поэтому для меня это именно то, о чем этот сайт.