From 059983c6c69275e14d6a4e01ca13a9b0bb3786d5 Mon Sep 17 00:00:00 2001 From: kappa1 Date: Sat, 6 Aug 2011 13:18:49 +0000 Subject: [PATCH] Fix issue with Linux and Java 7 where libjawt.so was failing to load. --- .../org/lwjgl/LinuxSysImplementation.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/java/org/lwjgl/LinuxSysImplementation.java b/src/java/org/lwjgl/LinuxSysImplementation.java index 3669bbc2..1f885b8d 100644 --- a/src/java/org/lwjgl/LinuxSysImplementation.java +++ b/src/java/org/lwjgl/LinuxSysImplementation.java @@ -31,6 +31,10 @@ */ package org.lwjgl; +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.security.PrivilegedExceptionAction; +import java.lang.UnsatisfiedLinkError; /** * @@ -42,7 +46,21 @@ final class LinuxSysImplementation extends J2SESysImplementation { private static final int JNI_VERSION = 19; static { - java.awt.Toolkit.getDefaultToolkit(); // This will make sure libjawt.so is loaded + // Load libawt.so and libmawt.so, needed for libjawt.so + java.awt.Toolkit.getDefaultToolkit(); + + // manually load libjawt.so into vm, needed since Java 7 + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + try { + System.loadLibrary("jawt"); + } catch (UnsatisfiedLinkError e) { + // catch and ignore an already loaded in another classloader + // exception, as vm already has it loaded + } + return null; + } + }); } public int getRequiredJNIVersion() {