启动的时候复制jar包里面的文件出来,给jvm调用

文章目录
  1. 1. 成功方式
  2. 2. 错误1
  3. 3. 错误2
  4. 4. 错误3
  5. 5. 错误4

成功方式

利用jarFile来实现 文件读取

参考链接 https://www.codenong.com/1463192/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String destDirPath = getCurrentDirPath();
// 读取jar文件
URL resource = this.getClass().getResource("/PSTools");
JarURLConnection conn = (JarURLConnection) resource.openConnection();
JarFile jarFile = conn.getJarFile();
final Enumeration<JarEntry> entries = jarFile.entries();
while (entries.hasMoreElements()) {
final JarEntry entry = entries.nextElement();
if (entry.getName().contains(".exe")) {
System.out.println("File :" + entry.getName());
JarEntry fileEntry = jarFile.getJarEntry(entry.getName());
InputStream input = jarFile.getInputStream(fileEntry);
FileUtils.copyInputStreamToFile(input,new File(destDirPath,entry.getName()));
}
}

错误1

主要是 希望列出jar内的文件路径来实现读取 jar包内指定路径下的所有文件并复制出来

1
2
3
4
5
File[] files = new File(currentDirPath).listFiles();
String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
for (File file : files) {
FileUtils.copyDirectory(file,new File(path));
}

错误2

这个是这参考这位博主的文章 https://yebukong.com/article/1102629952022507521.html

没有生效 读取读取不到 jar包内 classpath 的文件

1
2
3
4
5
/*  ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("static/blog/**");
for (Resource resource : resources) {
FreeMarkerUtil.copyResourceToFile(resource, aPath,"/static/blog/");
}*/

错误3

目前只能读到文件

1
String path = new File(getClass().getResource("").getPath()).getParentFile().getParent());

错误4

目前读取不到jar 下面的文件夹和具体文件

1
2
URL[] urls = {this.getClass().getResource("/PSTools") };
URLClassLoader cl = URLClassLoader.newInstance(urls);