将 .JAR 和动态加载的资产打包到一个 .EXE 中
Package .JAR and Dynamically loaded assets into one .EXE
问题:
我有一个 .jar 文件和 2 个包含资产的文件夹。我希望将它们全部打包到一个 .exe 文件中。我已经尝试过 Launch4j,但这不允许将资产添加到 .exe 中。
问题二:
我使用 "assets/audio/" + assetName 在我的程序中定义文件路径。这是否需要按照您的方法进行更改,如果是,如何更改?如果你不知道这个问题的答案,就不要回答。
此问题已针对其他语言提出here and here,但这些问题的答案无济于事。任何东西都有帮助,提前谢谢你。
您可以将资产放入您的 jar 中。
例如,如果您有一个名为 Test.txt 的文件并且您想要打印
文件内容到控制台
"Test.txt"文件放在与根包同级的名为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.
问题:
我有一个 .jar 文件和 2 个包含资产的文件夹。我希望将它们全部打包到一个 .exe 文件中。我已经尝试过 Launch4j,但这不允许将资产添加到 .exe 中。
问题二:
我使用 "assets/audio/" + assetName 在我的程序中定义文件路径。这是否需要按照您的方法进行更改,如果是,如何更改?如果你不知道这个问题的答案,就不要回答。
此问题已针对其他语言提出here and here,但这些问题的答案无济于事。任何东西都有帮助,提前谢谢你。
您可以将资产放入您的 jar 中。
例如,如果您有一个名为 Test.txt 的文件并且您想要打印 文件内容到控制台
"Test.txt"文件放在与根包同级的名为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.