web-dev-qa-db-ja.com

EclipseがUbuntuのUIをフリーズする

私は最近ubuntu16.04(このバージョンに自動的に更新されます)をインストールしました。通常はJavaで開発し、Eclipseを知っているので、すべて問題なくインストールしました。

必要なものすべて(Javaパス、JDK ...特別なものはありません)を構成しましたが、EclipseUIを除いて正常に動作します。

プロジェクトを作成するたびに(プロジェクトは正しく作成されますが)、プログラムを実行するたびに(プログラムは正常に実行されますが(常に正しくxDとは限りませんが、それは私のせいです))、その他の多くのタスクでUIがフリーズします。 。

なぜこれが起こり得るのか考えはありますか?そしてさらに良いことに、それを解決する方法は?

また、使用しているJREを再確認し(オープンソースソフトウェアに問題がある人を見つけたため)、Oracleのバージョンを使用しています(名前がわからない、申し訳ありませんが、バージョン8)。その64ビットバージョンのすべて。

編集:私は火星バージョンを使用していることを言及するのを忘れました。また、NetBeans(8.1)をインストールしたばかりで、まったく同じ問題が発生しました。グラフィックドライバの問題だと思いましたが、再度インストールしても同じ問題が発生します。今何を試すべきかわからない。

PDATE:ログファイルを確認しました。奇妙なことは何も見えませんが、何かが足りない可能性があります。

!SESSION 2015-12-04 13:24:38.930     -----------------------------------------------
 Eclipse.buildId=4.5.1.M20150904-0015
 Java.version=1.8.0_66
 Java.vendor=Oracle Corporation
 BootLoader constants: OS=linux, Arch=x86_64, WS=gtk, NL=es_ES
 Command-line arguments:  -os linux -ws gtk -Arch x86_64

 !ENTRY org.Eclipse.core.resources 2 10035 2015-12-04 13:24:40.542
 !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.

PDATE 2: @ danが提案したコマンドを実行するだけです。これが結果です

 "main" #1 prio=6 os_prio=0 tid=0x00007f0ec000a000 nid=0x26e0 runnable [0x00007f0ec9a18000]
   Java.lang.Thread.State: RUNNABLE
    at org.Eclipse.swt.internal.gtk.OS._gtk_widget_get_allocation(Native Method)
    at org.Eclipse.swt.internal.gtk.OS.gtk_widget_get_allocation(OS.Java:14234)
    at org.Eclipse.swt.widgets.Control.getBounds(Control.Java:832)
    at org.Eclipse.jface.fieldassist.ControlDecoration.getDecorationRectangle(ControlDecoration.Java:1185)
    at org.Eclipse.jface.fieldassist.ControlDecoration$3.paintControl(ControlDecoration.Java:635)
    at org.Eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.Java:230)
    at org.Eclipse.swt.widgets.EventTable.sendEvent(EventTable.Java:84)
    at org.Eclipse.swt.widgets.Display.sendEvent(Display.Java:4481)
    at org.Eclipse.swt.widgets.Widget.sendEvent(Widget.Java:1329)
    at org.Eclipse.swt.widgets.Widget.sendEvent(Widget.Java:1353)
    at org.Eclipse.swt.widgets.Widget.sendEvent(Widget.Java:1338)
    at org.Eclipse.swt.widgets.Control.gtk_draw(Control.Java:3219)
    at org.Eclipse.swt.widgets.Canvas.gtk_draw(Canvas.Java:171)
    at org.Eclipse.swt.widgets.Shell.gtk_draw(Shell.Java:1306)
    at org.Eclipse.swt.widgets.Widget.windowProc(Widget.Java:1942)
    at org.Eclipse.swt.widgets.Control.windowProc(Control.Java:5590)
    at org.Eclipse.swt.widgets.Display.windowProc(Display.Java:4717)
    at org.Eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
    at org.Eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.Java:9279)
    at org.Eclipse.swt.widgets.Display.eventProc(Display.Java:1225)
    at org.Eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
    at org.Eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.Java:2425)
    at org.Eclipse.swt.widgets.Display.readAndDispatch(Display.Java:3428)
    at org.Eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.Java:172)
    at org.Eclipse.jface.operation.ModalContext.run(ModalContext.Java:387)
    at org.Eclipse.jface.wizard.WizardDialog.run(WizardDialog.Java:1002)
    at org.Eclipse.jdt.internal.ui.wizards.NewElementWizard.performFinish(NewElementWizard.Java:134)
    at org.Eclipse.jdt.internal.ui.wizards.NewClassCreationWizard.performFinish(NewClassCreationWizard.Java:80)
    at org.Eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.Java:799)
    at org.Eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.Java:429)
    at org.Eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.Java:619)
    at org.Eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.Java:248)
    at org.Eclipse.swt.widgets.EventTable.sendEvent(EventTable.Java:84)
    at org.Eclipse.swt.widgets.Display.sendEvent(Display.Java:4481)
    at org.Eclipse.swt.widgets.Widget.sendEvent(Widget.Java:1329)
    at org.Eclipse.swt.widgets.Display.runDeferredEvents(Display.Java:3819)
    at org.Eclipse.swt.widgets.Display.readAndDispatch(Display.Java:3430)
    at org.Eclipse.jface.window.Window.runEventLoop(Window.Java:827)
    at org.Eclipse.jface.window.Window.open(Window.Java:803)
    at org.Eclipse.ui.internal.navigator.wizards.WizardShortcutAction.run(WizardShortcutAction.Java:99)
    at org.Eclipse.jface.action.Action.runWithEvent(Action.Java:473)
    at org.Eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.Java:595)
    at org.Eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.Java:511)
    at org.Eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.Java:420)
    at org.Eclipse.swt.widgets.EventTable.sendEvent(EventTable.Java:84)
    at org.Eclipse.swt.widgets.Display.sendEvent(Display.Java:4481)
    at org.Eclipse.swt.widgets.Widget.sendEvent(Widget.Java:1329)
    at org.Eclipse.swt.widgets.Display.runDeferredEvents(Display.Java:3819)
    at org.Eclipse.swt.widgets.Display.readAndDispatch(Display.Java:3430)
    at org.Eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.Java:1127)
    at org.Eclipse.core.databinding.observable.Realm.runWithDefault(Realm.Java:337)
    at org.Eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.Java:1018)
    at org.Eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.Java:156)
    at org.Eclipse.ui.internal.Workbench$5.run(Workbench.Java:654)
    at org.Eclipse.core.databinding.observable.Realm.runWithDefault(Realm.Java:337)
    at org.Eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.Java:598)
    at org.Eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.Java:150)
    at org.Eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.Java:139)
    at org.Eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.Java:196)
    at org.Eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.Java:134)
    at org.Eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.Java:104)
    at org.Eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.Java:380)
    at org.Eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.Java:235)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:497)
    at org.Eclipse.equinox.launcher.Main.invokeFramework(Main.Java:669)
    at org.Eclipse.equinox.launcher.Main.basicRun(Main.Java:608)
    at org.Eclipse.equinox.launcher.Main.run(Main.Java:1515)
    at org.Eclipse.equinox.launcher.Main.main(Main.Java:1488)

   Locked ownable synchronizers:
    - None
10
Mayuso

私はすでに問題を見つけました。 ZoltánとDanが指摘したように、GTKが問題でした。

解決策:(Eclipseでのみテスト済み):

  1. [ウィンドウ]> [設定]> [一般]> [外観]に移動します。
  2. 「GTK」テーマを他の好きなテーマに変更します。

これで問題は解決しました。

9
Mayuso

Linux上のEclipseUIは、デフォルトでGTK 3を使用してコンテンツを表示しますが、問題が頻繁に発生することがわかりました。これが問題の原因であるかどうかは正確にはわかりませんが、環境変数設定を使用してGTK3サポートを無効にすることで確認できます。export SWT_GTK3=0。ただし、これが問題の原因であることがわかるまで、永続的にオンにすることはありません。

14
Zoltán Ujhelyi

次のように、EclipseプロセスのJavaスレッドダンプを生成する必要があります。

  1. プロセスIDを確立します。

    jps -lv
    

    Eclipseインスタンスを表す行を識別し、行の最初の番号であるプロセスIDを覚えておいてください。

  2. プロセスIDを使用して、スレッドダンプをトリガーします。

    jstack -l process_id > jstack.out
    

このようにして、その時点でそのJVMで稼働している各スレッドのスタックトレースを取得します。ここから、プログラムが実行されていない理由を特定できるはずです。

6
dan

オープン https://bugs.Eclipse.org/bugs/show_bug.cgi?id=492829 これをSWT/GTK3インタラクションのバグの可能性として追跡します。

3
vorburger

この問題は、以前のバージョンのEclipseで発生すると思います。 JavaとJ2eeの両方でEclipseMarsを試してみました。Neonバージョンをチェックインしました。この問題は発生していません。Eclipseがフリーズしていません。