将.JAR和动态加载的资产打包到一个.EXE中

时间:2017-02-14 01:30:43

标签: java exe packages

问题:
我有一个.jar文件和2个包含资产的文件夹。我希望他们都被打包成一个.exe文件。我已经尝试过Launch4j,但这不允许将资源添加到.exe。

问题2:
我使用“assets / audio /”+ assetName在程序中定义文件路径。是否需要通过遵循您的方法来改变,如果是这样的话?如果您不知道答案,请不要回答。

此问题已被要求提供其他语言herehere,但这些问题的答案无济于事。任何事都有帮助,并提前感谢你。

1 个答案:

答案 0 :(得分:1)

您可以将资源放入jar中。

例如,如果您有一个名为Test.txt的文件,并且您想要打印 文件内容到控制台

" Test.txt" file放在一个名为assets的包中,该包位于根包的同一级别

The project structure will look like this

package net.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Test {
    public static void main(String[]args) {
        BufferedReader br = null;

        try {
            InputStream is = Test.class.getResourceAsStream("/assets/Test.txt");

            if(is != null) {
                br = new BufferedReader(new InputStreamReader(is)); 

                //Print the content of Test.txt
                String line;
                while((line = br.readLine()) != null) {
                    System.out.println(line); 
                }
            } else {
                //Resource not found
                System.out.println("Resource unavailable!");
            }

        } catch (IOException e) {
            e.printStackTrace(); //Log IO Error
        } finally {
            if(br != null) {
                try {
                    br.close();
                } catch (IOException e) {}
            }
        }
    }
}

通过使用File对象,您无法像通常使用外部文件一样访问.jar资源。

如果您的资产进入了jar,那么您可以使用Launch4j(或替代)来 得到一个.exe。