2015-04-22 13 views
5

Pracuję nad aplikacją Spring, która korzysta z danych Spring. Pracujemy w Eclipse Luna (4.4.0) i używamy aktualizacji Java 8 20 (ten sam problem występuje w wyższych wersjach).Java VM ulega awarii w systemie Mac OS X przy uruchamianiu warstwy utrwalania sprężyny

Po uruchomieniu aplikacji z Eclipse pod Windows działa dobrze. W systemie Mac OS X występuje następujący błąd:

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 

Jak widać błąd występuje podczas inicjowania połączenia z bazą danych do mysql. Baza danych jest uruchomiona.

Wszelkie ogólne pomysły, jak to naprawić? Wiem, że to bardzo trudne pytanie, ale proszę dać mi znać, jeśli więcej informacji może pomóc. Być może są dobrze znane sytuacje, w których może się to zdarzyć.

UPDATE:

zawartość dziennika błędów:

Pastebin: hs_err_pid5336.log

+1

Czy otrzymujesz plik hs_err w pliku CWD procesu java? Jeśli tak, opublikuj zawartość. –

+0

Oczywiście, dodałem link do powyższego logu. – titusn

Odpowiedz

1

Wystąpił ten problem podczas próby osadzenia biblioteki z zależnością JavaFX w środowisku bezgłowym. Początkowo stworzyłem opakowanie rozruchowe JavaFX za pomocą kontenera Swing. Ta konfiguracja spowodowała awarię maszyny JVM z wymienionym zrzutem awaryjnym.

Znalazłem to rozwiązanie: https://stackoverflow.com/a/25969138/2633009. Chodzi o to, aby usunąć opakowanie Swing i uruchomienie środowiska JavaFX stosując następujący kod:

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(); 
     } 
    } 
} 

który następnie nazwie w głównym aplikacji podczas startu systemu, używając:

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

Moja aplikacja Wiosna biegnie teraz płynnie na obu systemach OSX i Windows.

1

Wydaje związane z jakiegoś materiału graficznego na Mac sprawdzając rodzimą ślad stosu w pliku oznaczenia hs_err. To pytanie: How to disable or bypass Hardware Graphics Acceleration(Prism) in JavaFX opisuje tę samą awarię. Porada, aby uruchomić jvm z -Dprism.order=j2d lub -Dprism.order=sw. Spróbuj!

+0

Było to związane z javaFX, jak widać w powyższej odpowiedzi, ale okazało się, że mamy inny problem. – titusn

Powiązane problemy