Встроенная ошибка: индекс строки вне диапазона: 70 - PullRequest
2 голосов
/ 31 октября 2011

У меня Maven 2.2.1, JDK 1.6.0_26 в Linux Ubuntu.
Я использую maven-jar-plugin версии 2.3.2
Когда я пытаюсь построить проект с помощью maven2, у меня появляется ошибка:

Встроенная ошибка: индекс строки вне диапазона: 70

Что может быть не так?Он всегда строится, но не сегодня.

В корневой папке у меня есть конфигурация

<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) в 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.(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.createArchive (AbstractJarMojo.java:216) ... еще 20

Ответы [ 4 ]

3 голосов
/ 31 октября 2011

Глядя на исходный код org.codehaus.plexus.archiver.jar.Manifest, похоже, что это может быть проблема кодирования.Сначала они делают string.substring (0, x), а затем string.getBytes (). Length> x, что выглядит очень подозрительно.

Попробуйте преобразовать ваши файлы в ascii и посмотрите, что вы получите.

1 голос
/ 31 октября 2011

Поскольку вы не указываете код, я могу только догадываться, что могло пойти не так.В сообщениях об ошибках говорится, что ошибка вызвана подстрокой substring (int) или substring (int, int).Подобный код может вызвать эту ошибку:

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

Глядя на этот код, вы, вероятно, допустили ошибку, преувеличивая endIndex в методе substring.

Если вы хотите разбить строку на основе символов, рассмотрите возможность использования String.indexOf(char).

Для получения дополнительной информации о строках, проверьте JavaDoc .

0 голосов
/ 07 июля 2014

Это ошибка 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

0 голосов
/ 31 октября 2011

Первое, что нужно сделать, это сравнить реальную ревизию всего вашего проекта с вашим последним, который работал. Итак, вы видите, какие файлы (MANIFEST.MF?) Изменились. Я предполагаю, что один из файлов pom был изменен или извлечение из хранилища использовало неправильную кодировку файла (на этот раз).

(исправлена ​​опечатка)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...