代码之家  ›  专栏  ›  技术社区  ›  tuk

如何从Java的MANIFEST中读取条目。MF文件中的值在shell中是多行的?

  •  0
  • tuk  · 技术社区  · 1 年前

    我有一个歧管。MF,如下所示

    Manifest-Version: 1.0
    Created-By: Maven JAR Plugin 3.3.0
    Build-Jdk-Spec: 17
    Implementation-Title: cengine
    Implementation-Version: 0.0.1-SNAPSHOT
    Main-Class: org.springframework.boot.loader.JarLauncher
    Start-Class: com.spotnana.obt.commissionengine.CommissionEngineApplicati
     on
    Spring-Boot-Version: 3.0.13
    Spring-Boot-Classes: BOOT-INF/classes/
    Spring-Boot-Lib: BOOT-INF/lib/
    Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
    Spring-Boot-Layers-Index: BOOT-INF/layers.idx
    

    我想读书 Start-Class 来自上述MANIFEST。MF文件。我尝试了上面提到的解决方案 here .

    显示 Specification 如下所示

    在UTF8编码的形式中,任何一行的长度都不能超过72字节(而不是字符)。如果一个值会使初始行的长度超过72字节,则应在额外的行上继续(每行以一个空格开头)。

    尝试时

    perl -0777 -wpe 's/\n //g' MANIFEST.MF | awk '/Start-Class/{print $2}' 
    

    它看起来像

    onm.spotnana.obt.commissionengine.CommissionEngineApplicati
    
    1 回复  |  直到 1 年前
        1
  •  0
  •   Joop Eggen    1 年前

    这似乎是Windows的一行结尾( \r\n )搞砸了图案匹配。

    perl -0777 -wpe 's/\r?\n //g' MANIFEST.MF | awk '/Start-Class/{print $2}' 
    

    补充 \r? 为了满足这两种情况,Linux 窗户。

    推荐文章