jar 内部文件

wd9053 2010-04-06 11:15:36
为了方便,想将一个程序的类文件和设置文件、结果文件打入一个jar包,可实际运行时发现jar文件不能访问jar包中的文件。
文件结构
./test //包
./set //设置文件
jar -cvfm **.jar manifest.mf ./test ./set
然后通过相对路径用BufferedReader读取设置文件。实际运行时发现,jar文件只会去找与其同级的set文件夹,而不会去找jar内部的set文件夹。
求教该如何设置,而且为什么jar文件能够读取内部的包和META-INF文件夹,但不能读取内部的set文件夹?
...全文
54 5 打赏 收藏 转发到动态 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
没看懂,一般用 ClassLoader.getSystemResourceAsStream() 来输入流的
wd9053 2010-04-06
  • 打赏
  • 举报
回复
额,manifest文件应该是:
Main-Class: work/Test
Manifest-Version: 1.0
wd9053 2010-04-06
  • 打赏
  • 举报
回复
./work 存放.class文件
./set 存放设置文件
./manifest.mf内容:
Main-Class: wd/MainFrame
Manifest-Version: 1.0

运行命令 jar -cvfm Test.jar manifest.mf ./work ./set
要读取./set/1.set文件并打印行数。
编译后发现在当前位置运行Test.jar能正常读取,但Test.jar移动其他目录中时不能正常读取,即jar读取的不是文件内部的set/1.set,简单代码如下:

package work;

import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.util.ArrayList;
import java.util.HashSet;

public class Test
{
public static final File root = new File("./set");
public static final File wordFile = new File(root, "1.set");
private static String[] word = load(wordFile);

public static String[] load(File aim)
{
ArrayList<String> result = new ArrayList<String>();
String temp;
BufferedReader br = null;
try
{
br = new BufferedReader(new FileReader(aim));
while((temp = br.readLine()) != null)
{
result.add(temp);
}
br.close();
String[] sArray = new String[result.size()];
sArray = result.toArray(sArray);
//System.out.println(sArray.length);
return sArray;
}
catch(Exception ex)
{
ex.printStackTrace();
return new String[0];
}
}
}
huangyangweiyue 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]

读取文件的代码呢?
[/Quote]

你确定路径正确?有没有异常。一并发出来。。
  • 打赏
  • 举报
回复
读取文件的代码呢?
相关推荐
maven到底是什么?    Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具[百度百科]    这种又是大白话,如果没明白maven是什么,那么上面这句话跟没说一样,我自己觉得,Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,而这里pom.xml文件对于学了一点maven的人来说,就有些熟悉了,怎么通过pom.xml的配置就可以获取到jar包呢?pom.xml配置文件从何而来?等等类似问题我们需要搞清楚,如果需要使用pom.xml来获取jar包,那么首先该项目就必须为maven项目,maven项目可以这样去想,就是在java项目和web项目的上面包裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通过pom.xml添加jar包)。    所以,根据上一段的描述,我们最终的目的就是学会如何在pom.xml中配置获取到我们想要的jar包,在此之前我们就必须了解如何创建maven项目,maven项目的结构是怎样,与普通java,web项目的区别在哪里,还有如何配置pom.xml获取到对应的jar包等等,这里提前了解一下我们如何通过pom.xml文件获取到想要的jar的,具体后面会详细讲解该配置文件

62,566

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告