2015-04-22 31 views
5

Yay Verilerini kullanan bir Yay uygulaması geliştiriyorum. Eclipse Luna'da (4.4.0) çalışıyoruz ve Java 8 update 20 kullanıyoruz (aynı sorun daha yüksek sürümlerde ortaya çıkıyor).Java VM, Mac OS X altyazı kalıcılık katmanı başlangıcında çöküyor

Uygulama, Windows altında Eclipse'den başlatıldığında iyi çalışıyor. Mac OS X altında şu hata oluşur:

2015-04-22 14:26:27.492 INFO 5363 --- [   main] o.s.j.d.DriverManagerDataSource   : Loaded JDBC driver: com.mysql.jdbc.Driver 
2015-04-22 14:26:27.590 INFO 5363 --- [   main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'jpaPersistenceUnit' 
2015-04-22 14:26:28.715 INFO 5363 --- [   main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'jpaPersistenceUnit' 
# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# SIGSEGV (0xb) at pc=0x00007fff890330dd, pid=5363, tid=30215 
# 
# JRE version: Java(TM) SE Runtime Environment (8.0_20-b26) (build 1.8.0_20-b26) 
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.20-b23 mixed mode bsd-amd64 compressed oops) 
# Problematic frame: 
# C [libobjc.A.dylib+0x10dd] objc_msgSend+0x1d 

Eğer mysql veritabanı bağlantısı başlatırken hata oluşur görebileceğiniz gibi. Bu veritabanı çalışıyor.

Bunu düzeltmek için herhangi bir genel fikir? Bunu sormak için bir streç olduğunu biliyorum, ancak daha fazla bilgi yardımcı olabilirse lütfen bana bildirin. Belki de bunun meydana gelebileceği iyi bilinen durumlar vardır.

GÜNCELLEME: hata günlüğü

içeriği:

Pastebin: hs_err_pid5336.log

+1

Java sürecinin CWD'sinde bir hs_err dosyası var mı? Eğer öyleyse, lütfen içeriği yazınız. –

+0

Elbette, yukarıdaki günlüğe bir bağlantı ekledim. – titusn

cevap

1

Başsız bir ortamda bir JavaFX bağımlılığı olan bir kitaplığı gömmeye çalışırken bu tam sorun oluştu. Başlangıçta bir Swing konteyneri kullanarak bir JavaFX önyükleyici sarıcı oluşturmuştum. Bu kurulum, JVM'nin belirtilen kilitlenme dökümü ile çökmesine neden oldu.

Bu çözümü buldum: https://stackoverflow.com/a/25969138/2633009. kullanılarak

import javafx.application.Application; 
import javafx.stage.Stage; 

public class JavaFXInitializer extends Application { 

    private static Object barrier = new Object(); 

    @Override 
    public void start(final Stage primaryStage) throws Exception { 
     synchronized (barrier) { 
      barrier.notify(); 
     } 
    } 

    public static void initialize() throws InterruptedException { 
     Thread t = new Thread("JavaFX Init Thread") { 
      @Override 
      public void run() { 
       Application.launch(JavaFXInitializer.class, new String[0]); 
      } 
     }; 
     t.setDaemon(true); 
     t.start(); 
     synchronized (barrier) { 
      barrier.wait(); 
     } 
    } 
} 

sonra açılış sırasında ana uygulamada denir:

try { 
    JavaFXInitializer.initialize(); 
} catch (InterruptedException e) { 
    // Failed to initialise JavaFX 
    e.printStackTrace(); 
} 

Benim Bahar uygulaması artık çalıştırır fikri Aşağıdaki kodu kullanarak JavaFX ortamı Salıncak sarıcı kaldırıp başlatmaktır OSX ve Windows hem de pürüzsüz.

1

Eğer hs_err dizisiyle dosyasında yerli yığın izlemesini kontrol eğer Mac üzerinde bazı grafik şeyler ile ilgili görünüyor. Bu soru: How to disable or bypass Hardware Graphics Acceleration(Prism) in JavaFX aynı kilitlenme açıklar. Buradaki tavsiye, jvm'yi -Dprism.order=j2d veya -Dprism.order=sw ile çalıştırmaktır. Dene!

+0

Yukarıdaki cevapta görebildiğiniz gibi javaFX ile ilişkiliydi, ancak farklı bir sorunumuz olduğu ortaya çıktı. – titusn