Ubuntu,JavaFX,Java執行時環境已經檢測到一個致命的錯誤
我已經安裝了ubuntu 14.04.02 x64,oracle jdk 1.8.4,我嘗試執行JavaFX8專案,但是我在eclipse中收到這個訊息(不是每次都是):
# # A fatal error has been detected by the Java Runtime Environment: # #SIGSEGV (0xb) at pc=0x00007f69a19a4f78, pid=7035, tid=140090187572992 # # JRE version: Java(TM) SE Runtime Environment (8.0_40-b25) (build 1.8.0_40-b25) # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.40-b25 mixed mode linux-amd64 compressed oops) # Problematic frame: # V[libjvm.so+0x6c3f78]jni_invoke_nonstatic(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x38 # # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again # # If you would like to submit a bug report, please visit: #http://bugreport.java.com/bugreport/crash.jsp # ---------------T H R E A D--------------- Current thread (0x00007f699c28a800):JavaThread "JavaFX Application Thread" [_thread_in_vm, id=7057, stack(0x00007f6949cde000,0x00007f6949ddf000)] siginfo: si_signo: 11 (SIGSEGV), si_code: 128 (SI_KERNEL), si_addr: 0x0000000000000000 Registers: RAX=0x00007f6949dd9b70, RBX=0x00007f6949dd9a80, RCX=0x0000000000000001, RDX=0x3b746e6576456e6f RSP=0x00007f6949dd98d0, RBP=0x00007f6949dd9a50, RSI=0x00007f6949dd9ae0, RDI=0x00007f699c28a9f8 R8 =0x00007f699c1e3f28, R9 =0x00007f6949dd9a80, R10=0x0000000000000011, R11=0x00007f698d1fb000 R12=0x00007f699c28a800, R13=0x00007f699c1e3f28, R14=0x0000000000000001, R15=0x00007f699c28a9f8 RIP=0x00007f69a19a4f78, EFLAGS=0x0000000000010206, CSGSFS=0x0000000000000033, ERR=0x0000000000000000 TRAPNO=0x000000000000000d Top of Stack: (sp=0x00007f6949dd98d0) 0x00007f6949dd98d0:00007f6949dd9f30 00007f698cdf8768 0x00007f6949dd98e0:00007f6949dd9930 00007f6949dd99b0 0x00007f6949dd98f0:00007f6949dd9a80 00007f6949dd9ae0 0x00007f6949dd9900:00007f699c28a9f8 00007f69a19c4810 0x00007f6949dd9910:00007f6960011a60 00007f6960011ae0 0x00007f6949dd9920:00007f6960011e48 00000000000003d8 0x00007f6949dd9930:00007f69880d4f08 00000000d8954d60 0x00007f6949dd9940:000000000000006f 000000000000000a 0x00007f6949dd9950:00000000d8c35188 00007f6900000000 0x00007f6949dd9960:0000000000000000 00007f6949dd9a20 0x00007f6949dd9970:00007f699c217040 0000000100000140 0x00007f6949dd9980:00007f69880d4f08 00007f6949dd9938 0x00007f6949dd9990:00007f6949dd9979 0000000800000005 0x00007f6949dd99a0:00007f69880d4f00 00007f699c28a800 0x00007f6949dd99b0:00007f69a2220590 00007f69a2d03470 0x00007f6949dd99c0:00000000d8954a78 00007f69880d4f08 0x00007f6949dd99d0:0000000000000000 00007f699c28a800 0x00007f6949dd99e0:00007f69880dee68 00007f699c28a800 0x00007f6949dd99f0:00007f69880dee68 00007f699c28a800 0x00007f6949dd9a00:00007f6949dd9a50 00007f69880dee68 0x00007f6949dd9a10:00007f69880dee68 00007f69880dee68 0x00007f6949dd9a20:00007f699c28a9f8 00007f6949dd9a80 0x00007f6949dd9a30:00007f699c28a800 00007f6949dd9ac0 0x00007f6949dd9a40:00007f699c1e3f28 00007f699c28a9f8 0x00007f6949dd9a50:00007f6949dd9b40 00007f69a19a971f 0x00007f6949dd9a60:00007f699c28a800 00007f697eedcfc4 0x00007f6949dd9a70:00007f6949dd9b50 3b746e6576456e6f 0x00007f6949dd9a80:00007f69a22211f0 00007f69a2d03470 0x00007f6949dd9a90:000000009c217040 0000000000000063 0x00007f6949dd9aa0:0000000000000000 0000003000000018 0x00007f6949dd9ab0:00007f6949dd9c30 00007f6949dd9b70 0x00007f6949dd9ac0:00007f699c28a800 0000000000000000 Instructions: (pc=0x00007f69a19a4f78) 0x00007f69a19a4f58:00 00 48 85 d2 48 89 bd b0 fe ff ff 48 89 b5 a8 0x00007f69a19a4f68:fe ff ff 4c 89 8d a0 fe ff ff 0f 84 10 09 00 00 0x00007f69a19a4f78:4c 8b 22 4d 85 e4 0f 84 04 09 00 00 48 8b 45 10 0x00007f69a19a4f88:48 8b 98 38 01 00 00 48 83 7b 18 f7 0f 87 06 06 Register to memory mapping: RAX=0x00007f6949dd9b70 is pointing into the stack for thread: 0x00007f699c28a800 RBX=0x00007f6949dd9a80 is pointing into the stack for thread: 0x00007f699c28a800 RCX=0x0000000000000001 is an unknown value RDX=0x3b746e6576456e6f is an unknown value RSP=0x00007f6949dd98d0 is pointing into the stack for thread: 0x00007f699c28a800 RBP=0x00007f6949dd9a50 is pointing into the stack for thread: 0x00007f699c28a800 RSI=0x00007f6949dd9ae0 is pointing into the stack for thread: 0x00007f699c28a800 RDI=0x00007f699c28a9f8 is an unknown value R8 =0x00007f699c1e3f28 is an unknown value R9 =0x00007f6949dd9a80 is pointing into the stack for thread: 0x00007f699c28a800 R10=0x0000000000000011 is an unknown value R11=0x00007f698d1fb000 is at entry_point+32 in (nmethod*)0x00007f698d1fae90 R12=0x00007f699c28a800 is a thread R13=0x00007f699c1e3f28 is an unknown value R14=0x0000000000000001 is an unknown value R15=0x00007f699c28a9f8 is an unknown value Stack: [0x00007f6949cde000,0x00007f6949ddf000],sp=0x00007f6949dd98d0,free space=1006k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V[libjvm.so+0x6c3f78]jni_invoke_nonstatic(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x38 V[libjvm.so+0x6c871f]jni_CallVoidMethodV+0x10f C[libglass.so+0x1b798]JNIEnv_::CallVoidMethod(_jobject*, _jmethodID*, ...)+0x98 C[libglass.so+0x19355]WindowContextBase::process_key(_GdkEventKey*)+0x225 C[libglass.so+0x22bf0]WindowContextBase::im_filter_keypress(_GdkEventKey*)+0x1f0 C[libglass.so+0x254d4]process_events(_GdkEvent*, void*)+0x204 C[libgdk-x11-2.0.so.0+0x591ec] Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) jcom.sun.glass.ui.gtk.GtkApplication.enterNestedEventLoopImpl()V+0 jcom.sun.glass.ui.gtk.GtkApplication._enterNestedEventLoop()Ljava/lang/Object;+15 jcom.sun.glass.ui.Application.enterNestedEventLoop()Ljava/lang/Object;+14 jcom.sun.glass.ui.EventLoop.enter()Ljava/lang/Object;+42 jcom.sun.javafx.tk.quantum.QuantumToolkit.enterNestedEventLoop(Ljava/lang/Object;)Ljava/lang/Object;+107 jjavafx.stage.Stage.showAndWait()V+74 jjavafx.scene.control.HeavyweightDialog.showAndWait()V+11 jjavafx.scene.control.Dialog.showAndWait()Ljava/util/Optional;+41 jclasses.LoginDialog.showLoginDialog()V+10 jcontroller.MainWindowController.buttAdministratorAction(Ljavafx/event/ActionEvent;)V+22 v~StubRoutines::call_stub jsun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 jsun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 J 856 C1 sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (10 bytes) @ 0x00007f698d0ed304 [0x00007f698d0ed200+0x104] J 855 C1 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f698d0ecd44 [0x00007f698d0ec960+0x3e4] jsun.reflect.misc.Trampoline.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+7 jsun.reflect.GeneratedMethodAccessor1.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+40 J 856 C1 sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (10 bytes) @ 0x00007f698d0ed304 [0x00007f698d0ed200+0x104] J 855 C1 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f698d0ecd44 [0x00007f698d0ec960+0x3e4] jsun.reflect.misc.MethodUtil.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+20 jjavafx.fxml.FXMLLoader$MethodHandler.invoke([Ljava/lang/Object;)V+19 jjavafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(Ljavafx/event/Event;)V+12 jcom.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Ljavafx/event/Event;)V+51 J 1483 C1 com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Ljavafx/event/EventType;Ljavafx/event/Event;)Ljavafx/event/Event; (34 bytes) @ 0x00007f698d29fb94 [0x00007f698d29f640+0x554] jcom.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Ljavafx/event/Event;)Ljavafx/event/Event;+8 jcom.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Ljavafx/event/Event;)Ljavafx/event/Event;+11 jcom.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Ljavafx/event/Event;Ljavafx/event/EventDispatchChain;)Ljavafx/event/Event;+29 J 1433 C1 com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Ljavafx/event/Event;)Ljavafx/event/Event; (101 bytes) @ 0x00007f698d288ec4 [0x00007f698d288d20+0x1a4] jcom.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Ljavafx/event/Event;Ljavafx/event/EventDispatchChain;)Ljavafx/event/Event;+17 J 1433 C1 com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Ljavafx/event/Event;)Ljavafx/event/Event; (101 bytes) @ 0x00007f698d288ec4 [0x00007f698d288d20+0x1a4] jcom.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Ljavafx/event/Event;Ljavafx/event/EventDispatchChain;)Ljavafx/event/Event;+17 J 1433 C1 com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Ljavafx/event/Event;)Ljavafx/event/Event; (101 bytes) @ 0x00007f698d288ec4 [0x00007f698d288d20+0x1a4] jcom.sun.javafx.event.EventUtil.fireEventImpl(Ljavafx/event/EventDispatchChain;Ljavafx/event/EventTarget;Ljavafx/event/Event;)Ljavafx/event/Event;+10 jcom.sun.javafx.event.EventUtil.fireEvent(Ljavafx/event/EventTarget;Ljavafx/event/Event;)Ljavafx/event/Event;+37 jjavafx.event.Event.fireEvent(Ljavafx/event/EventTarget;Ljavafx/event/Event;)V+30 jjavafx.scene.Node.fireEvent(Ljavafx/event/Event;)V+86 jjavafx.scene.control.Button.fire()V+15 jcom.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(Ljavafx/scene/input/MouseEvent;)V+23 jcom.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(Ljavafx/scene/input/MouseEvent;)V+83 jcom.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(Ljavafx/event/Event;)V+5 jcom.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(Ljavafx/event/Event;)V+5 jcom.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Ljavafx/event/Event;)V+28 J 1483 C1 com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Ljavafx/event/EventType;Ljavafx/event/Event;)Ljavafx/event/Event; (34 bytes) @ 0x00007f698d29fb94 [0x00007f698d29f640+0x554] jcom.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Ljavafx/event/Event;)Ljavafx/event/Event;+8 jcom.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Ljavafx/event/Event;)Ljavafx/event/Event;+11 jcom.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Ljavafx/event/Event;Ljavafx/event/EventDispatchChain;)Ljavafx/event/Event;+29 J 1433 C1 com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Ljavafx/event/Event;)Ljavafx/event/Event; (101 bytes) @ 0x00007f698d288ec4 [0x00007f698d288d20+0x1a4] jcom.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Ljavafx/event/Event;Ljavafx/event/EventDispatchChain;)Ljavafx/event/Event;+17 J 1433 C1 com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Ljavafx/event/Event;)Ljavafx/event/Event; (101 bytes) @ 0x00007f698d288ec4 [0x00007f698d288d20+0x1a4] jcom.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Ljavafx/event/Event;Ljavafx/event/EventDispatchChain;)Ljavafx/event/Event;+17 J 1433 C1 com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Ljavafx/event/Event;)Ljavafx/event/Event; (101 bytes) @ 0x00007f698d288ec4 [0x00007f698d288d20+0x1a4] jcom.sun.javafx.event.EventUtil.fireEventImpl(Ljavafx/event/EventDispatchChain;Ljavafx/event/EventTarget;Ljavafx/event/Event;)Ljavafx/event/Event;+10 jcom.sun.javafx.event.EventUtil.fireEvent(Ljavafx/event/EventTarget;Ljavafx/event/Event;)Ljavafx/event/Event;+46 jjavafx.event.Event.fireEvent(Ljavafx/event/EventTarget;Ljavafx/event/Event;)V+30 jjavafx.scene.Scene$MouseHandler.process(Ljavafx/scene/input/MouseEvent;Z)V+491 jjavafx.scene.Scene$MouseHandler.access$1500(Ljavafx/scene/Scene$MouseHandler;Ljavafx/scene/input/MouseEvent;Z)V+3 jjavafx.scene.Scene.impl_processMouseEvent(Ljavafx/scene/input/MouseEvent;)V+6 jjavafx.scene.Scene$ScenePeerListener.mouseEvent(Ljavafx/event/EventType;DDDDLjavafx/scene/input/MouseButton;ZZZZZZZZZ)V+46 jcom.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run()Ljava/lang/Void;+438 jcom.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run()Ljava/lang/Object;+1 v~StubRoutines::call_stub jjava.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+0 jcom.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$350()Ljava/lang/Void;+11 jcom.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$208.get()Ljava/lang/Object;+4 jcom.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(Ljava/util/function/Supplier;)Ljava/lang/Object;+18 jcom.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Lcom/sun/glass/ui/View;JIIIIIIIZZ)V+103 jcom.sun.glass.ui.View.handleMouseEvent(JIIIIIIIZZ)V+30 jcom.sun.glass.ui.View.notifyMouse(IIIIIIIZZ)V+181 v~StubRoutines::call_stub jcom.sun.glass.ui.gtk.GtkApplication._runLoop(Ljava/lang/Runnable;Z)V+0 jcom.sun.glass.ui.gtk.GtkApplication.lambda$null$48(Ljava/lang/Runnable;Z)V+7 jcom.sun.glass.ui.gtk.GtkApplication$$Lambda$41.run()V+12 jjava.lang.Thread.run()V+11 v~StubRoutines::call_stub
當我的應用程式執行這個程式碼:
ChangeRoot changeRoot = new ChangeRoot(Main.mainStage, CONSTANTS.ROOT_EMPLOYEE_WINDOW.string, "Employee panel", true); changeRoot.doFadingTransition(borderPane, CONSTANTS.FADE_OUT.value, CONSTANTS.FADE_IN.value);
..
public class ChangeRoot{ private boolean bChangeStageSize = true; private boolean bFadeStage = true; private String sNewTitle; private boolean bResizable; private Controller controller; private Stage primaryStage; private FXMLLoader loader; private Parent root; public ChangeRoot(Stage primaryStage, String sRoot, String sNewTitle, boolean bResizable){ this.primaryStage = primaryStage; this.bResizable = bResizable; this.sNewTitle = sNewTitle; loader = new FXMLLoader(getClass().getResource(sRoot)); try{ root = loader.load(); controller = loader.getController(); }catch(IOException exception){ ExceptionDialog exceptionDialog = new ExceptionDialog("Error while loading fxml file", exception); exceptionDialog.showAndWait(); } } /**************************** PUBLIC METHODS *******************************/ public Controller getController(){ return controller; } public void doFadingTransition(Pane actualPane, double fadeOutMillis, double fadeInMillis){ actualPane.setDisable(true); //fading out final DoubleProperty stageOpacity = Main.mainStage.opacityProperty(); final DoubleProperty oldPaneOpacity = actualPane.opacityProperty(); if(bFadeStage == true) oldPaneOpacity.bindBidirectional(stageOpacity); Timeline fadeOut = new Timeline( new KeyFrame(Duration.ZERO, new KeyValue(oldPaneOpacity, 1.0)), new KeyFrame(new Duration(fadeOutMillis), e -> { if(bResizable == true) Main.mainStage.setResizable(true); else Main.mainStage.setResizable(false); if(bFadeStage == true) oldPaneOpacity.unbindBidirectional(stageOpacity); changeRootAndWindow(); fadeIn(fadeInMillis); }, new KeyValue(oldPaneOpacity, 0.0) )); fadeOut.play(); } public final void changeRoot(){ changeRootAndWindow(); } /**************************** PRIVATE METHODS *******************************/ private final void changeRootAndWindow(){ //it will do depending what was put to the constructor if(primaryStage.isMaximized() == true){ primaryStage.setMaximized(false); } primaryStage.getScene().setRoot(root); primaryStage.setTitle(sNewTitle); if(bChangeStageSize == true){ Main.mainStage.setHeight(controller.getMainPane().getPrefHeight() + 38); Main.mainStage.setWidth(controller.getMainPane().getPrefWidth() +16); } } private void fadeIn(double fadeInMillis){ if(controller == null){ ExceptionDialog exceptionDialog = new ExceptionDialog("insert controller class", new Exception()); exceptionDialog.showAndWait(); } final DoubleProperty newPaneOpacity = controller.getMainPane().opacityProperty(); final DoubleProperty stageOpacity = Main.mainStage.opacityProperty(); if(bFadeStage == true) newPaneOpacity.bindBidirectional(stageOpacity); Timeline fadeIn = new Timeline( new KeyFrame(Duration.ZERO, new KeyValue(newPaneOpacity, 0.0)), new KeyFrame(new Duration(fadeInMillis), actionEvent -> { if(bFadeStage == true) newPaneOpacity.unbindBidirectional(stageOpacity); }, new KeyValue(newPaneOpacity, 1.0) )); fadeIn.play(); } }
================================================== ==========
它不是每次都發生,而是大部分.通常在我開始eclipse之後沒有問題,第一次執行我的程式.
我在網際網路上看了一下答案,並試過:
sudo unlink /usr/lib/x86_64-linux-gnu/libsoup-2.4.so.1
還有這個:
I've tried adding the the below line to the end of eclipse.ini, but Eclipse can't start at all: org.eclipse.swt.browser.DefaultType=mozilla I think there is some typo error, the line should be: -Dorg.eclipse.swt.browser.DefaultType=mozilla and this worked for me.
但沒有什麼幫助….我不知道該怎麼辦
編輯:
當我在Windows上執行相同的程式碼時,沒有問題.
EDIT2
我發現當我使用這樣的靜態變數:
Stage primaryStage = Main.primaryStage; primaryStage.setMaximized(true);
這會導致錯誤.
首先,設定SWT的選項不會幫助您,當您正在尋找JavaFX問題. SWT僅在Eclipse內部使用. JavaFX應用程式作為新程序啟動,並不會注意到SWT由同一臺計算機上的另一個Java應用程式使用.
從堆疊跟蹤,它看起來像一個本地事件迴圈(GtkApplication.enterNestedEventLoopImpl)檢測到一個“按鍵”事件(process_events– > WindowContextBase :: process_key). JavaFX方面似乎有一個事件處理程式,因為程式碼接下來嘗試呼叫一個void方法(JNIEnv _ :: CallVoidMethod),然後它崩潰.
我不知道靜態場如何在這裡有效果也是按鍵不是罕見的,所以這應該是經過良好測試的程式碼.
此外,JavaFX似乎使用Gtk 2(libgdk-x11-2.0.so.0),這意味著在Tt和Eclipse中導致無休止的問題的Gtk 3的主題是不可見的.但是,或許你或某人選擇了比“Gtk 2”預設使用的“更好”的桌面主題.我建議:
>嘗試將主題重置為預設值
>為您的Linux安裝最新的補丁
>建立一個只包含問題的程式碼的精簡版本.
>嘗試為JavaFX執行一個“Hello World”應用程式和一些簡報.
>如果失敗,嘗試開啟一個針對OpenJDK:ofollow,noindex" target="_blank">https://bugs.openjdk.java.net/secure/Dashboard.jspa 的錯誤
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/29519242/ubuntu-javafx-a-fatal-error-has-been-detected-by-the-java-runtime-environment