嵌入式错误:字符串索引超出范围:70

时间:2011-10-31 15:03:04

标签: java maven-2

我在Linux Ubuntu上有Maven 2.2.1,JDK 1.6.0_26 我使用maven-jar-plugin版本2.3.2
当我尝试使用maven2构建项目时,我有错误:

嵌入式错误:字符串索引超出范围:70

什么可能是错的? 它总是建立,但不是今天。

在root pom中我有配置

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.2</version>

    <configuration>
        <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
            <manifestEntries>
                <!--suppress MavenModelInspection -->
                <Buildserver-projectname>${job.name}</Buildserver-projectname>
                <Build-number>${buildserver.buildnumber}</Build-number>
                <Revision-number>${svn.revision.number}</Revision-number>
                <!--suppress MavenModelInspection -->
                <Build-time>${buildTime}</Build-time>
                <!-- Don`t change  Implementation-Vendor because it use in sufd java class-->
                <Implementation-Vendor>Integration Systems</Implementation-Vendor>
                <!--suppress MavenModelInspection -->
                <Implementation-Version>${implementation.version}</Implementation-Version>
                <Implementation-Title>${project.description}</Implementation-Title>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>

引起:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:70     at java.lang.String.substring(String.java:1934)     在org.codehaus.plexus.archiver.jar.Manifest $ Attribute.writeLine(Manifest.java:388)     在org.codehaus.plexus.archiver.jar.Manifest $ Attribute.writeValue(Manifest.java:370)     在org.codehaus.plexus.archiver.jar.Manifest $ Attribute.write(Manifest.java:344)     在org.codehaus.plexus.archiver.jar.Manifest $ Section.write(Manifest.java:588)     在org.codehaus.plexus.archiver.jar.Manifest.write(Manifest.java:1079)     在org.codehaus.plexus.archiver.jar.JarArchiver.writeManifest(JarArchiver.java:363)     在org.codehaus.plexus.archiver.jar.JarArchiver.initZipOutputStream(JarArchiver.java:298)     在org.codehaus.plexus.archiver.zip.AbstractZipArchiver.createArchiveMain(AbstractZipArchiver.java:309)     在org.codehaus.plexus.archiver.zip.AbstractZipArchiver.execute(AbstractZipArchiver.java:211)     在org.codehaus.plexus.archiver.AbstractArchiver.createArchive(AbstractArchiver.java:875)     在org.apache.maven.archiver.MavenArchiver.createArchive(MavenArchiver.java:543)     在org.apache.maven.plugin.jar.AbstractJarMojo.createArchive(AbstractJarMojo.java:216)     ......还有20个

4 个答案:

答案 0 :(得分:3)

查看org.codehaus.plexus.archiver.jar.Manifest的源代码,看起来它可能是编码问题。他们首先执行string.substring(0,x)然后执行string.getBytes()。length&gt; x看起来很可疑。

尝试将您的文件转换为ascii并查看您获得的内容。

答案 1 :(得分:1)

由于您没有指定代码,我只能猜出可能出错的地方。错误消息表示错误是由invoke substring(int)或substring(int,int)引起的。像这样的代码可能会调用该错误:

String str = "I like cats.";
String favoriteObject = str.substring(7, 13);

查看此代码,您可能犯了过度夸大substring方法中的endIndex的错误。

如果您正在考虑根据字符拆分字符串,请考虑使用String.indexOf(char)

有关字符串的更多信息,请查看JavaDoc

答案 2 :(得分:0)

首先要做的是将整个项目的实际版本与最新版本的版本进行比较。所以你看到哪些文件(MANIFEST.MF?)已经改变了。我假设其中一个pom文件已更改或从存储库检出使用了错误的文件编码(此时)。

(修正了错字)

答案 3 :(得分:0)

这是一个Plexus Archiver错误,将所有编码都视为单字节(UTF-8不适用):

http://jira.codehaus.org/browse/PLXCOMP-70

通过此补丁修复了plexus-archiver-2.1:

http://jira.codehaus.org/secure/attachment/37210/PLXCOMP-70.patch