Я пытаюсь прочитать несколько файлов из файла JAR. Файл JAR находится в папке lib Tomcat. Я читаю файл как:
String filePath = DirectoryReader.class.getClassLoader().getResource(directoryPath).getPath();
System.out.println("Directory Path: " + directoryPath);
System.out.println("File Path 1: " + filePath);
filePath = filePath.substring(6, filePath.indexOf("!"));
System.out.println("File Path 2: " + filePath);
Path configJARLocation = Paths.get(filePath);
System.out.println("JAR location: " + configJARLocation.toString());
InputStream inputStream = Files.newInputStream(configJARLocation);
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
InputStreamReader inputStreamReader = null;
Но я получаю исключение в журналах:
Directory Path: META-INF/gmm/xmlFiles/predefined/ipsec/
File Path 1: file:/opt/app/tools/tomcat/lib/appConfigurations.jar!/META-INF/gmm/xmlFiles/predefined/ipsec/
File Path 2: opt/app/tools/tomcat/lib/appConfigurations.jar
JAR location: opt/app/tools/tomcat/lib/appConfigurations.jar
java.nio.file.NoSuchFileException: opt/app/tools/tomcat/lib/appConfigurations.jar
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.Files.newByteChannel(Files.java:361)
at java.nio.file.Files.newByteChannel(Files.java:407)
at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
at java.nio.file.Files.newInputStream(Files.java:152)
at com.gtc.logicalprovisioning.dac.file.DirectoryReader.process(DirectoryReader.java:72)
Кроме начальных /
перед opt
, я могу не вижу ничего неправильного. Строка 72 кода:
InputStream inputStream = Files.newInputStream(configJARLocation);
Тот же код работает в Windows. Только когда я развертываюсь в моей среде Unix, он начинает отказывать. Сначала я думал, что это проблема разрешения или доступа. Но, похоже, это не так. Я изменил chmod
сначала с 755, а затем на 777 для файла JAR. Затем я изменил разрешение, используя chown
. Но это все равно не сработало. Я не Unix эксперт, поэтому я не могу в этом разобраться. Добрый совет! Спасибо!