No se informa ningún error cuando el archivo se ejecuta en idea, pero java.lang.IllegalArgumentException: URI no es jerárquico se informa después de empaquetar y ejecutar

El motivo de este problema es que los archivos colocados en el classpath del classpath no se pueden encontrar después del empaquetado.
Este método puede crear un archivo antes de empaquetarlo, pero después de empaquetarlo en un paquete jar, se informará el error URI no jerárquico porque el archivo no se puede encontrar en template/LZGICAD1.mdb después de cambiar la ruta.

File file =  new File("template/LZGICAD1.mdb");

inserte la descripción de la imagen aquí
solución:

//创建一个随即路径
File tempFolder = FileUtil
		.mkdir(tmpDirPath + "\\TempMDB\\" 
		+ System.currentTimeMillis() + "_" + (int) (Math.random() * 10000));

ClassPathResource classPathResource =  new ClassPathResource("template/LZGICAD1.mdb");
//根据类路径获取resource下面文件的流
InputStream inputStream = classPathResource.getInputStream();
//在本地生成一个文件
File file = new File(tempFolder, "LZGICAD1.mdb");
//通过类路径中的文件流来覆盖本地随机生成的文件
File mdbModel = FileUtil.writeFromStream(inputStream, file,true);

Obtenga la ruta de clase a través del nuevo ClassPathResource("template/LZGICAD1.mdb"), que no cambiará después del empaquetado, y luego obtenga la secuencia del archivo de ruta de clase a través de classPathResource.getInputStream().

Cree un archivo localmente, FileUtil.writeFromStream(inputStream, file,true) para sobrescribir el archivo local.

Supongo que te gusta

Origin blog.csdn.net/weixin_44860226/article/details/131956857
Recomendado
Clasificación