依存する2つの.dllファイルを持つ.jarがあります。実行時にこれらのファイルを.jarからユーザーの一時フォルダーにコピーする方法があるかどうかを知りたい。現在実行中のjarのファイルをコピーする方法
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;
}
私の主な問題は、実行時に瓶の外に.dllファイルを取得している:ここで私は(質問のサイズを小さくするために一つだけの.dll負荷に編集した)している現在のコードです。 .jar内からパスを取得する方法は参考になります。
ありがとうございます。
arround .dllファイルのパスを取得しますか? – user217895
はい、ファイルにアクセスしてコピーできます。私が必要とするのはクラスパスだけです。私はすでにファイルをコピーする方法を知っています。コード例の場合、 – DeanMWake