我将我的项目组装到一个带有maven的jar中,并且有一个"数据"文件夹里面包含很多.bat文件,结构是: 罐 - - ---数据(此文件夹包含1.bat,2.bat ......) ..... 我在How do I list the files inside a JAR file?中使用了这个方法,但是当我在cmd中运行jar时,仍然存在NullPointerException,我尝试了很多并且不知道问题出在哪里。 我的代码是:
CodeSource src=ParcelLayerTree.class.getProtectionDomain().getCodeSource();
List<String> list=new ArrayList<String>();
if(src!=null){
URL jar=src.getLocation();
ZipInputStream zip=new ZipInputStream(jar.openStream());
ZipEntry zipEntry=null;
while((zipEntry=zip.getNextEntry())!=null){
String entryName=zipEntry.getName();
if(entryName.endsWith(".dat")){
list.add(entryName);
}
}
}
if(list.size()<=0){
throw new IOException("not found the dat file");
}
for (String filePath : list) {
String fileName=fileNameSplit(filePath);
InputStream inputStream=ParcelLayerTree.class.getClassLoader().getResourceAsStream(fileName);
try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
int label = Integer.parseInt(fileName.split("\\.")[0]);