2017-06-06 5 views
1

Je vis quelque chose de vraiment étrange, et je ne sais pas ce qui le cause du tout. Ceci est la ligne de code problématique:Java Création de l'instance de BufferedImage Freezes Programme

BufferedImage out = new BufferedImage(256, 256, BufferedImage.TYPE_INT_RGB); 

En appelant cela, tous les threads gèlent et tout s'arrête. J'ai essayé de mettre ceci dans son propre fil et le fil principal, la même chose se produit. J'utilise LWJGL3, donc ça pourrait être un problème, mais je ne vois pas comment ça pourrait être.

Edit: Ne se produit pas dans un projet vide sans LWJGL dans ou hors de -XstartOnFirstThread

+1

Comment savez-vous que c'est là que le programme s'arrête? Avez-vous vérifié la pile d'appel de chaque thread avec un débogueur? – Radiodef

+0

@Radiodef Je n'ai vérifié aucune pile d'appel, mais j'ai ce code pour déboguer: 'System.out.println (" Avant ");' 'BufferedImage out = nouvelle BufferedImage (256, 256, BufferedImage.TYPE_INT_RGB);' 'System.out.println (" Après ");' Je ne vois que "Avant" dans la console. –

+1

Eh bien, la prochaine chose que je ferais est d'inspecter les piles d'appels de chaque thread avec un débogueur pour vérifier qu'ils ont effectivement gelé et où ils sont tous. – Radiodef

Répondre

1

Ok! J'ai trouvé la solution. Il s'avère que tout ce qu'il faut est l'argument JVM suivant: -Djava.awt.headless=true Vous devez également vous assurer que vous ne l'exécutez pas dans le thread principal, vous devez le faire en dehors du thread où GLFW est initialisé. Tout cela ne s'applique que si vous exécutez LWJGL sous Mac, Linux et Windows n'ont pas ce problème.