2011-10-31 2 views
2

Linux Ubuntu에서 Maven 2.2.1, JDK 1.6.0_26이 있습니다.
나는 내가 maven2와 함께 프로젝트를 빌드 할 때 내가 받는다는 항아리 - 플러그인 버전 2.3.2
를 사용, 난이 오류 :
포함 된 오류 : 문자열 인덱스가 범위를 벗어남 : 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.writeLine (Manifest.java:388) at 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) at org.codehaus.plexus.archiver.jar.Manifest.write (Manifest.java:1079) at org.codehaus.plexus.archiver.jar.JarArchiver.writeManifest (JarArchiver.java:363) at org.codehaus. org.codehaus.plexus.archiver.zip.AbstractZipArchiver.createArchiveMain (AbstractZipArchiver.java:309) at org.codehaus.plexus.archiver.zip. (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 more

답변

1

코드를 지정하지 않았으므로 잘못되었을 수도있는 부분을 추측 할 수 있습니다. 오류 메시지는 substring (int) 또는 substring (int, int)을 호출하여 오류가 발생했다고 설명합니다. 다음과 같은 코드가 오류 호출 할 수 :

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

이 코드를보고, 당신은 아마의 실수를 지나치게 과장 문자열 방법에서 endIndex는.

문자를 기반으로 문자열을 분할하려는 경우 String.indexOf(char)을 사용해보십시오.

문자열과 관련된 자세한 내용은 JavaDoc을 확인하십시오.

+0

내가 단지 내 프로젝트에 항아리를 구축 받는다는을 사용하여 내 코드가 아닙니다. – 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-issue-tab. 아마도 매니페스트를 먼저 변환하고 이것이 작동하는지 확인하는 것이 가장 좋습니다. 묻는 사람이 사용자 지정 매니페스트가 없으며 생성하는 동안 오류가 발생하지 않는 한. 그것은 문제가 될 수 있습니다. –

0

먼저해야 할 일은 전체 프로젝트의 실제 개정과 최근에 작업 한 개정을 비교하는 것입니다. 따라서 어떤 파일 (MANIFEST.MF?)이 변경되었는지 확인하십시오. pom 파일 중 하나가 변경되었거나 저장소의 체크 아웃이 잘못된 파일 인코딩 (이번에는)을 사용했다고 가정합니다.

(고정 오타)

(UTF-8에 해당되지 않음) 단일 바이트 모든 인코딩 처리와 신경총 아카이버 버그의
관련 문제