2011-10-31 13 views
2

我在Linux Ubuntu上有Maven 2.2.1,JDK 1.6.0_26。
我我用maven-JAR插件版本2.3.2
當我試着使用maven2的建設項目,我有錯誤:
嵌入式錯誤:字符串索引超出範圍:70

嵌入式錯誤:字符串索引超出範圍:70

什麼可能是錯的?它總是建立,但並不是今天。

在根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 在java.lang.String.substring(String.java:1934) 在org.codehaus.plexus.archiver.jar.Manifest $ Attribute.writeValue(Manifest.java:370) at org .codehaus.plexus.archiver.jar.Manifest $ Attribute.write(Manifest.java:344) at org.codehaus.plexus.archiver.jar.Manifest $ Section.write(Manifest.java:588)org.codehaus.plexus.archiver.jar.Manifest.write(Manifest.java:1079) at org.codehaus.plexus.archiver.jar.JarArchiver.writeManifest(JarArchiver.java:363) at org.codehaus。 plexus.archiver.jar.JarArchiver.initZipOutputStream(JarArchiver.java:298) at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.createArchiveMain(AbstractZipArchiver.java:309) at org.codehaus.plexus.archiver.zip。 AbstractZipArchiver.execute(AbstractZipArchiver.java:211) at org.codehaus.plexus.archiver.AbstractArchiver.createArchive(AbstractArchiver.java:875) at org.apache.maven.archiver.MavenArchiver.createArchive(MavenArchiver.java:543) at org.apache.maven.plugin.jar.AbstractJarMojo.createArchive(AbstractJarMojo.java:216) ... 20更多

回答

1

由於您沒有指定代碼,我只能猜測出現了什麼問題。錯誤消息說錯誤是由調用子字符串(int)或子字符串(int,int)引起的。這樣的代碼可以調用的錯誤:

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

看這段代碼,你可能做出的錯誤過度誇大的子方法endIndex的。

如果您正在考慮根據字符拆分字符串,請考慮使用String.indexOf(char)。請參考JavaDoc

+0

這不是我的代碼,我只用maven在我的項目建設罐子。 – pe4enko

3

看看org.codehaus.plexus.archiver.jar.Manifest的源代碼,看起來它可能是編碼問題。他們首先做string.substring(0,x),然後string.getBytes()。length> x,這看起來很可疑。

試着將你的文件轉換爲ASCII碼,看看你得到了什麼。

+1

是的,似乎一些處理可能是基於字節長度而不是字符長度:http://jira.codehaus.org/browse/PLXCOMP-70?page=com.atlassian.streams.streams-jira-plugin%3Aactivity -stream發出標籤。可能最好先轉換清單,看看是否有效。除非提問者沒有自定義清單,並且在生成過程中發生錯誤。這可能是一個問題。 –

0

首先要做的是將您整個項目的實際修訂版與您最新的修訂版進行比較。所以你會看到哪些文件(MANIFEST.MF?)已經改變。我假設其中一個pom文件發生了更改,或者存儲庫中的簽出使用了錯誤的文件編碼(這次)。

(固定一個錯字)