office-gobmx/connectivity/com/sun/star/sdbcx/comp/hsqldb/NativeLibraries.java
Noel Grandin 745d361b49 Java5 update - use generics where appropriate
Change-Id: I2e679fa3b8148f1ff0d1ebfa2e105b99f18d39cf
2012-06-29 22:03:03 +02:00

71 lines
2.8 KiB
Java

/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
package com.sun.star.sdbcx.comp.hsqldb;
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
final class NativeLibraries {
public static void load() {
if (System.getProperty( "os.name" ).startsWith("Windows")) {
loadLibrary("msvcr71");
loadLibrary("uwinapi");
loadLibrary("sal3");
loadLibrary("dbtoolsmi");
}
loadLibrary("hsqldb");
}
private static void loadLibrary(String libname) {
// At least on Mac OS X Tiger, System.loadLibrary("hsqldb2") does not
// find the hsqldb2 library one directory above sdbc_hsqldb.jar, even
// though ".." is on the jar's Class-Path; however, the alternative
// code (needing Java 1.5, which is given for Mac OS X Tiger) works
// there:
try {
System.loadLibrary(libname);
} catch (UnsatisfiedLinkError e) {
ClassLoader cl = NativeLibraries.class.getClassLoader();
if (cl instanceof URLClassLoader) {
URL url = ((URLClassLoader) cl).findResource(
System.mapLibraryName(libname));
if (url != null) {
try {
System.load(
File.class.getConstructor(
new Class[] {
ClassLoader.getSystemClassLoader().
loadClass("java.net.URI") }).
newInstance(
new Object[] {
URL.class.getMethod("toURI", new Class[0]).
invoke(url, (java.lang.Object[])null) }).
getAbsolutePath());
} catch (Throwable t) {
throw new UnsatisfiedLinkError(
e.toString()+ " - " + t.toString());
}
}
}
}
}
private NativeLibraries() {}
}