diff --git a/samples/com/jacob/samples/JavaWebStart/DLLFromJARClassLoader.java b/samples/com/jacob/samples/JavaWebStart/DLLFromJARClassLoader.java new file mode 100644 index 0000000..177db7f --- /dev/null +++ b/samples/com/jacob/samples/JavaWebStart/DLLFromJARClassLoader.java @@ -0,0 +1,64 @@ +package com.jacob.samples.JavaWebStart; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; + +/** + * It is sometimes necessary to run Jacob without being able to install the dll + * on the client machine. This is true in JavaWebStart (JWS) and possibly + * Applet environments. The obvious thing to do here is to jar up + * the Jacob.dll so that it can be downloaded the client along with the rest + * of the resources. This is simple except that the System.Load() function + * does not search jar files for DLLs. It searches the classpath. + * The work around to this problem is to write the DLL to a temporary file and then + * explicitly load the DLL calling passing the full path to the temporary file. + * + * The following code demonstrates this idea. + * + * @author joe + * + */ +public class DLLFromJARClassLoader { + + /** + * Load the DLL from the classpath rather than from the java path. + * This code uses this class's class loader to find the dell in one + * of the jar files in this class's class path. It then + * writes the file as a temp file and calls Load() on the temp file. + * The temporary file is marked to be deleted on exit so the dll + * is deleted from the system when the application exits. + *
+ * Derived from ample code found in Sun's java forums + *