我想使用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"/>
...
这不起作用......
祝你好运!
答案 0 :(得分:1)
这是一个简单的例子。我们假设您有以下目录结构:
./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
应该注意两件事:
/
来电路径开头的getClass().getResource(...)
。这很重要,因为否则类的包名称将被添加到给定路径(尽管在上面的示例中,Test.java没有包声明)。