部署java应用程序

时间:2016-05-25 15:10:34

标签: java

我有两个文件夹存储在我的Javafx应用程序的jar中,我不想将此应用程序作为可执行jar文件分发给客户,所以我使用{{1}将其更改为Application (.exe)文件}}。

当用户激活Launch4J时,我的应用程序会尝试将这两个文件夹从Application (.exe)复制到某个目录,此刻我似乎无法引用这两个文件夹Application (.exe)内的文件夹。

有没有人知道如何在java中执行此操作?

1 个答案:

答案 0 :(得分:0)

这是我用来完成这项工作的代码,如果有人需要的话,我会在这个页面上找到它。 How to write a Java program which can extract a JAR file and store its data in specified directory (location)?

    String temp  = System.getProperty("user.dir") + "\\unzipTester.exe";
    String destDir = "C:\\Users\\chris\\Desktop\\New folder (2)";
    java.util.jar.JarFile jar = null;

    try{
    jar = new java.util.jar.JarFile(temp);
    }
    catch(Exception ex){
        JOptionPane.showMessageDialog(null,ex.getMessage());
    }
    //JOptionPane.showMessageDialog(null,jar.getName());
    java.util.Enumeration enumEntries = jar.entries();
    while (enumEntries.hasMoreElements()) {
        java.util.jar.JarEntry file = (java.util.jar.JarEntry) enumEntries.nextElement();
        if(file.toString().contains("unziptester") || file.toString().contains("MANIFEST.MF") 
                || file.toString().contains("META-INF")){
            continue;            
        }
        System.out.println(file.toString());
        java.io.File f = new java.io.File(destDir + java.io.File.separator + file.getName());
        if (file.isDirectory() && !file.toString().contains("unziptester") && !file.toString().contains("META-INF")) { // 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();
    }