2013-09-06 26 views
6

MANIFEST.MFClass-Path要素のJARを作成しようとしています。私はクラスパスの要素を外部ソース(私の場合はMaven)から取得します。パスは絶対的なものであり、私のコントロールを超えているので、スペースのような奇妙な文字を含むことができます。MANIFEST.MFのクラスパスにスペースを含むファイルを処理するにはどうすればよいですか?

空間はクラスパス内の別のアイテムに使用されているので、このパスは動作しません。

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

どのように私はJARマニフェストでクラスパスの項目でエンコード/奇数文字/空白をエスケープすることができますか? Class-Path要素で

答えて

8

要素は、URLであるため、通常のエスケープ規則が適用されます(あなたが前方に使用する必要がありますだけでなくスラッシュ):

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

注:Cが有効なネットワークではありませんので、最初のスラッシュが必要ですプロトコル(httpまたはftpなど)。あなたは知識をひけらかすだったら、それは私にとってfile:///C:/...

+0

私は彼らがURLです知りませんでした。これは私がURLのリストを分割する必要があるので、私にとって非常に役に立ちます。私はパス/ JARファイル名のスペースについて何をすべきか疑問に思っていました...今私は無視できることを知っています。しかし、(スペース) - > '%20' – kevinarpe

+0

などのURLエンティティを使用して表現されますが、この種の絶対パスについては、ドライブ文字の前に '/'を含める必要があります。 ' @RDAlkire 'C 'は' http'とは違って有効なネットワークプロトコルではないため、クラスパスは/ C:/ User/Some%20Odd%20Name/project/target/project-1.0.0.jar' –

+0

正しい'ftp'。非常に正確であるためには 'file:/ C:/ ... 'でなければなりませんが、コンテキスト(マニフェストファイル)はファイルであると主張できるので、ベースURLは必ず' file:// ... '一定。 –

-1

あるべきキャレット文字が正常にWindowsのクラスパスにwithespaceを脱出する唯一の方法だった:

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

これはうまくいかないでしょう。 JavaはCMD.EXEを呼び出してMANIFEST.MFファイルを解析しません... –

関連する問題