Я использую этот код, чтобы получить Path
для файла тестового ресурса в коде тестов:
Path target = Path.of(
Thread.currentThread().getContextClassLoader()
.getResource("target1").getFile()
);
Файл находится в src/test/resources/target1
и копируется при сборке в target/test-classes/tartget1
.
Работает нормально на Unix -подобных системах, но на Windows выдает исключение:
java .nio.file.InvalidPathException: Illegal char <: > в индексе 2: / D: / a / имя проекта / имя репо / цель / классы испытаний / цель1
С помощью трассировки стека (с компьютера CI):
at java .base / sun.nio.fs.WindowsPathParser.normalize (WindowsPathParser. java: 182) в java .base / sun.nio.fs.WindowsPathParser.parse (WindowsPathParser. java: 153) в java .base / sun.nio.fs.WindowsPathParser.parse (WindowsPathParser. java: 77) в java .base / sun.nio.fs.WindowsPath.parse (WindowsPath. java: 92) в java .base / sun.nio.fs.WindowsFileSystem.getPath (WindowsFileSystem. java: 229) в java .base / java .nio.file.Path.of (Path. java: 147)
Как правильно получить Path
в платформе- агности c кстати? Я хочу использовать один и тот же код для Unix и Windows машин. (Мне трудно отладить эту проблему, потому что у меня нет Windows машины, только CI с Windows.)