无法在为 windows 打包的 java 应用程序中提取 jar 文件
Cannot extract jar file in java application packaged for windows
我的程序是在 Netbeans 8.0.2 中创建的。该程序应该在安装后创建一个(数据库)文件夹,并从其库中提取一个(数据库)jar 文件的内容。文件夹创建得很好,但 jar 文件的内容没有被提取。
我怎样才能使 jar 文件的提取工作?
注意:当我 运行 Netbeans 中的程序时,一切顺利。
示例代码:
String appHomeDir = new java.io.File(".").getCanonicalPath();
String destDir = appHomeDir + "/database";
File folder = new File(destDir);
if (!folder.exists()) {
folder.mkdir();
String current = new java.io.File(".").getCanonicalPath();
String jarFile = current + "\app\lib\database.jar";
java.util.jar.JarFile jar = new java.util.jar.JarFile(jarFile);
java.util.Enumeration enumEntries = jar.entries();
while (enumEntries.hasMoreElements()) {
java.util.jar.JarEntry file = (java.util.jar.JarEntry) enumEntries.nextElement();
java.io.File f = new java.io.File(destDir + java.io.File.separator + file.getName());
if (file.isDirectory()) { // if its a directory, create it
f.mkdir();
continue;
}
java.io.InputStream is = jar.getInputStream(file); // get the input stream
java.io.FileOutputStream fos = new java.io.FileOutputStream(f);
while (is.available() > 0) { // write contents of 'is' to 'fos'
fos.write(is.read());
}
fos.close();
is.close();
}
}
因此创建了 "database" 目录,但未提取 "database.jar" 的内容。
问题已解决:我将“/app/lib/database.jar”替换为“/lib/database.jar”
我的程序是在 Netbeans 8.0.2 中创建的。该程序应该在安装后创建一个(数据库)文件夹,并从其库中提取一个(数据库)jar 文件的内容。文件夹创建得很好,但 jar 文件的内容没有被提取。 我怎样才能使 jar 文件的提取工作? 注意:当我 运行 Netbeans 中的程序时,一切顺利。
示例代码:
String appHomeDir = new java.io.File(".").getCanonicalPath();
String destDir = appHomeDir + "/database";
File folder = new File(destDir);
if (!folder.exists()) {
folder.mkdir();
String current = new java.io.File(".").getCanonicalPath();
String jarFile = current + "\app\lib\database.jar";
java.util.jar.JarFile jar = new java.util.jar.JarFile(jarFile);
java.util.Enumeration enumEntries = jar.entries();
while (enumEntries.hasMoreElements()) {
java.util.jar.JarEntry file = (java.util.jar.JarEntry) enumEntries.nextElement();
java.io.File f = new java.io.File(destDir + java.io.File.separator + file.getName());
if (file.isDirectory()) { // if its a directory, create it
f.mkdir();
continue;
}
java.io.InputStream is = jar.getInputStream(file); // get the input stream
java.io.FileOutputStream fos = new java.io.FileOutputStream(f);
while (is.available() > 0) { // write contents of 'is' to 'fos'
fos.write(is.read());
}
fos.close();
is.close();
}
}
因此创建了 "database" 目录,但未提取 "database.jar" 的内容。
问题已解决:我将“/app/lib/database.jar”替换为“/lib/database.jar”