gpt4 book ai didi

java - ANT 创建 jar 文件

转载 作者:行者123 更新时间:2023-12-02 11:44:48 24 4
gpt4 key购买 nike

我想使用 ant 构建一个 jar 文件。我的项目中有一个资源文件夹,下面有文件和文件夹。示例:

Package---
src
Main.java
resources
images
logo.png

在 JAR 文件内,图像可以通过 ...File("resources/images/logo.png"); 访问,这可能吗?如果是,如何访问?

我尝试了几个选项,但无法弄清楚它是如何工作的。我的尝试之一:

...    
<zipfileset dir="${dir.buildfile}/ressources/images" includes="*.png"/>
<zipfileset dir="${dir.buildfile}/ressources/images" includes="*.jpg"/>
...

这不起作用...

最诚挚的问候!

最佳答案

这是一个简单的例子。假设您有以下目录结构:

./Test.java
./Test.class
./resources/test.txt

源文件访问文件resources/test.txt的位置,如下所示:

import java.io.*;
import java.net.*;

public class Test {
public void test() throws IOException, URISyntaxException {
URL url = getClass().getResource("/resources/test.txt");

try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) {
for (String line; (line = br.readLine()) != null;) {
System.out.println("> " + line);
}
}
}

public static void main(String[] args) throws Exception {
Test test = new Test();
test.test();
}
}

然后以下 ANT 目标将创建一个包含 .class 文件和 resources 目录的 jar 文件:

<target name="jar">
<jar destfile="test.jar">
<fileset dir="." includes="Test.class"/>
<fileset dir="." includes="resources/**"/>
</jar>
</target>

您可以通过运行来验证:

java -cp test.jar Test

有两点需要注意:

  1. getClass().getResource(...) 调用中路径开头的 /。这很重要,因为否则类的包名称将被添加到给定路径之前(尽管在上面的示例中,Test.java 没有包声明)。
  2. ANT 任务中第二个文件集中的“/**”部分。否则,只有目录本身(即没有任何包含的文件)会添加到您的 jar 文件中。

关于java - ANT 创建 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48289376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com