|
From: <eli...@us...> - 2006-11-13 12:21:46
|
Revision: 2641
http://svn.sourceforge.net/java-game-lib/?rev=2641&view=rev
Author: elias_naur
Date: 2006-11-13 04:21:31 -0800 (Mon, 13 Nov 2006)
Log Message:
-----------
Made LWJGLUtil.getPathFromClassLoader run the protected ClassLoader.findLibrary in a privileged context. This is apparently necessary to get a valid path in some cases. This fixes (at least) a problem where OpenAL failed to locate the native openal library in a web start program.
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/LWJGLUtil.java
Modified: trunk/LWJGL/src/java/org/lwjgl/LWJGLUtil.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/LWJGLUtil.java 2006-11-10 15:12:49 UTC (rev 2640)
+++ trunk/LWJGL/src/java/org/lwjgl/LWJGLUtil.java 2006-11-13 12:21:31 UTC (rev 2641)
@@ -404,24 +404,24 @@
* @param classloader Classloader to use
* @return Absolute path to library if found, otherwise null
*/
- public static String getPathFromClassLoader(String libname, ClassLoader classloader) {
+ public static String getPathFromClassLoader(final String libname, final ClassLoader classloader) {
try {
log("getPathFromClassLoader: searching for: " + libname);
- Object o = classloader;
- Class c = o.getClass();
+ Class c = classloader.getClass();
while (c != null) {
final Class clazz = c;
try {
- Method findLibrary = (Method)AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ return (String)AccessController.doPrivileged(new PrivilegedExceptionAction() {
public Object run() throws Exception {
- Method m = clazz.getDeclaredMethod("findLibrary", new Class[]{String.class});
- m.setAccessible(true);
- return m;
+ Method findLibrary = clazz.getDeclaredMethod("findLibrary", new Class[]{String.class});
+ findLibrary.setAccessible(true);
+ Object[] arguments = new Object[] {libname};
+ String path = (String)findLibrary.invoke(classloader, arguments);
+ return path;
}
});
- Object[] arguments = new Object[] {libname};
- return (String)findLibrary.invoke(o, arguments);
} catch (PrivilegedActionException e) {
+ log("Failed to locate findLibrary method: " + e.getCause());
c = c.getSuperclass();
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|