2013-09-06 1 views
6

Я пытаюсь построить JAR с элементом Class-Path в MANIFEST.MF. Я получаю элементы пути класса от внешнего источника (Maven в моем случае). Поскольку пути абсолютны и находятся вне моего контроля, они могут содержать странные символы, такие как пробелы.Как обрабатывать файлы с пробелами в пути к классам в MANIFEST.MF?

Поскольку пространства используются для разделения элементов в пути класса, этот путь не работает:

Class-Path: C:\User\Some Odd Name\project\target\project-1.0.0.jar 

Как я могу избежать/кодировать нечетные символы/пробела в пунктах в пути к классам JAR манифеста?

ответ

8

Элементы в Class-Path элемента являются URL-адреса, поэтому обычные выделяющиеся правила (и вы должны использовать прямую косую черту, а):

Class-Path: /C:/User/Some%20Odd%20Name/project/target/project-1.0.0.jar 

Примечание: Первоначальный слэш необходим, так как C не является допустимым сеть протокол (например, http или ftp). Если бы вы были педантичный, он должен быть file:///C:/...

+0

Я не знаю, что они являются URL-адреса. Это очень полезно для меня, поскольку мне нужно разбить список URL-адресов. Мне было интересно, что делать с пробелами в именах путей/JAR ... теперь я знаю, что могу игнорировать. Они будут представлены с использованием объектов URL, например, (пробел) -> '% 20' – kevinarpe

+0

Хорошо, однако я обнаружил, что для такого абсолютного пути мне также нужно было указать«/»перед буквой диска: ' Class-Path:/C:/User/Some% 20Odd% 20Name/project/target/project-1.0.0.jar' –

+0

@RDAlkire Исправить, так как 'C' не является допустимым сетевым протоколом в отличие от, скажем,' http' или 'ftp'. Чтобы быть очень правильным, это должно быть 'file:/C:/...', но можно утверждать, что контекст (файл манифеста) является файлом, поэтому базовый URL-адрес является alreay 'file: // ...' Исправлена. –

-1

Для меня каретка персонаж был единственный способ успешно избежать withespace вWindows, путь к классам:

Class-Path: C:\User\Some^ Odd^ Name\project\target\project-1.0.0.jar 
+0

Это не должно работать. Java не вызывает CMD.EXE для анализа файла MANIFEST.MF ... –

 Смежные вопросы

  • Нет связанных вопросов^_^