This question already has an answer here:
Does the jar MANIFEST.MF max line length of 72 include the EOL bytes
                                
                                    (1个答案)
                                
                        
                                7个月前关闭。
            
                    
以下是我的Ant构建文件的内容:

<?xml version="1.0"?>
<project name="testant"
         basedir=".">
  <property file="build.properties" />
  <target name="manifest">
    <tstamp />
    <manifest mode="update"
              file="manifest.mf">
      <attribute name="Built-By"
                 value="${user.name}" />
      <section name="common">
        <attribute name="Specification-Title"
                   value="${ant.project.name}" />
        <attribute name="Specification-Version"
                   value="1.0.0" />
        <attribute name="Specification-Vendor"
                   value="" />
        <attribute name="Implementation-Title"
                   value="" />
        <attribute name="Implementation-Version"
                   value="${TODAY}" />
        <attribute name="Implementation-Vendor"
                   value="" />
      </section>
      <attribute name="Main-Class"
                 value="${main.class}" />
    </manifest>
  </target>
</project>


以下是我的build.properties。

packages=com.javacodegeeks.patterns.strategypattern.*
main.class=com.javacodegeeks.patterns.strategypattern.TestStrategyPattern


以下是我的输出manifest.mf。

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.10.6
Created-By: 10.0.2+13 (Oracle Corporation)
Built-By: root
Main-Class: com.javacodegeeks.patterns.strategypattern.TestStrategyPat
 tern

Name: common
Specification-Title: testant
Specification-Version: 1.0.0
Specification-Vendor:
Implementation-Title:
Implementation-Version: July 7 2019
Implementation-Vendor:


为什么在主类名称中生成空格?

它不影响使用ant任务或jar命令生成jar文件。

可执行jar也可以按预期工作。

最佳答案

According to the JAR specification


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


某些工具似乎无视此要求,但Ant对此要求严格。您的行用70个字符加上大概\r\n换行。

关于java - 为什么ant Manifest任务会拆分长的主类名称? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56919452/

10-12 00:38
查看更多