【问题标题】:How do I handle files with spaces in the classpath in MANIFEST.MF?如何在 MANIFEST.MF 的类路径中处理带有空格的文件?
【发布时间】:2013-09-10 16:07:35
【问题描述】:

我尝试使用MANIFEST.MF 中的Class-Path 元素构建JAR。我从外部源(在我的例子中是 Maven)获取类路径的元素。由于路径是绝对的并且超出我的控制范围,因此它们可能包含奇怪的字符,例如空格。

由于空格用于分隔类路径中的项目,因此该路径不起作用:

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

如何在 JAR 清单中的类路径项中转义/编码奇数字符/空格?

【问题讨论】:

    标签: java jar classpath spaces


    【解决方案1】:

    Class-Path 元素中的元素是 URL,因此适用通常的转义规则(您也应该使用正斜杠):

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

    注意:由于C 不是有效的网络协议(如httpftp),因此需要使用初始斜线。如果你学究气,应该是file:///C:/...

    【讨论】:

    • 我不知道它们是 URL。这对我很有帮助,因为我需要拆分 URL 列表。我想知道如何处理路径/JAR 文件名中的空格……现在我知道我可以忽略了。它们将使用 URL 实体表示,例如,(空格)-> %20
    • 很好,但是我发现对于这种绝对路径,我还必须在驱动器号之前包含一个“/”:Class-Path: /C:/User/Some%20Odd%20Name/project/target/project-1.0.0.jar
    • @R.D.Alkire 正确,因为C 不是一个有效的网络协议,不像httpftp。非常正确,它应该是 file:/C:/...,但有人可能会争辩说上下文(清单文件)是一个文件,所以基本 URL 已经是 file://... 固定的。
    【解决方案2】:

    对我来说,插入符号是在 Windows 类路径中成功转义 withespace 的唯一方法:

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

    【讨论】:

    • 那应该行不通。 Java 不会调用 CMD.EXE 来解析 MANIFEST.MF 文件...
    猜你喜欢
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    相关资源
    最近更新 更多