Cómo copiar archivos de la jarra actualmente en ejecución

Tengo un .jar que tiene dos archivos .dll de los que depende. Me gustaría saber si hay alguna forma de copiar estos archivos desde dentro de .jar a una carpeta temporal de usuarios en tiempo de ejecución. Aquí está el código actual que tengo (editado a solo una carga .dll para reducir el tamaño de la pregunta):

public String tempDir = System.getProperty("java.io.tmpdir");
public String workingDir = dllInstall.class.getProtectionDomain().getCodeSource().getLocation().getPath();

public boolean installDLL() throws UnsupportedEncodingException {

try {
             String decodedPath = URLDecoder.decode(workingDir, "UTF-8");
             InputStream fileInStream = null;
             OutputStream fileOutStream = null;

             File fileIn = new File(decodedPath + "\\loadAtRuntime.dll");
             File fileOut = new File(tempDir + "loadAtRuntime.dll");

             fileInStream = new FileInputStream(fileIn);
             fileOutStream = new FileOutputStream(fileOut);

             byte[] bufferJNI = new byte[8192000013370000];
             int lengthFileIn;

             while ((lengthFileIn = fileInStream.read(bufferJNI)) > 0) {
                fileOutStream.write(bufferJNI, 0, lengthFileIn);
             }

            //close all steams
        } catch (IOException e) {
      e.printStackTrace();
             return false;
        } catch (UnsupportedEncodingException e) {
             System.out.println(e);
              return false;
        }

Mi principal problema es sacar los archivos .dll del jar en tiempo de ejecución. Cualquier forma de recuperar la ruta desde el .jar sería útil.

Gracias por adelantado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta