powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / java.lang.StackOverflowError
20 сообщений из 20, страница 1 из 1
java.lang.StackOverflowError
    #38424737
Roman46
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день коллеги! Столкнулся с такой проблемой. Есть объект, содержащий найденный файл по имени, с помощью метода resolveFile.
Код: java
1.
org.apache.commons.vfs.FileObject outputFile = VFS.getManager().resolveFile(outputDir.getURL().toExternalForm() + "/" + entry.getName());


Когда entry.getName() не содержит русские символы, то вызов метода
Код: java
1.
outputFile.getContent().getOutputStream()


проходит без ошибок. Когда же entry.getName(), содержит русские символы падает ошибка:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
java.lang.StackOverflowError

at sun.nio.cs.US_ASCII$Decoder.decodeLoop(US_ASCII.java:111)

at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:544)

at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:140)

at java.lang.StringCoding.decode(StringCoding.java:173)


Почему падает это исключение не могу понять, хотя догадываюсь, что дело в кодировке. Подскажите пожалуйста.
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424760
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полный stack ошибки покажите.
Он либо зациклен где-то. Надо по зацикленому участку смотреть где и почему.
Либо тупо не хватило размера стэка. Тогда его можно увелисить в настройках JVM.
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424764
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StackOverflowError совершенно не обязательно связан с последними элементами стэке. Они там могли оказаться только потому что падающий код это очень часто делает.
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424776
Roman46
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Полный стэк трейс ошибки:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
java.lang.StackOverflowError

at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:140)

at java.lang.StringCoding.decode(StringCoding.java:173)

at java.lang.String.<init>(String.java:443)

at java.lang.String.<init>(String.java:515)

at java.io.UnixFileSystem.list(Native Method)

at java.io.File.list(File.java:973)

at org.apache.commons.vfs.provider.local.LocalFile.doListChildren(LocalFile.java:119)

at org.apache.commons.vfs.provider.AbstractFileObject.getChildren(AbstractFileObject.java:611)

at org.apache.commons.vfs.provider.AbstractFileObject.traverse(AbstractFileObject.java:1607



Последняя строка повторяется много раз.
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424806
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже что дерево файловой системы сильно глубокое и VFS его всё сканирует причем используя рекурсию, что считается не разумным при работе с файловой системой.
Возможно даже не глубокое дерево, а просто линки в файловой системе, которые зацикливают рекурсию.
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424809
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия VFS актуальная?
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424818
Roman46
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Версия vfs: 2.0-SNAPSHOT-20091012-PATCHED
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424820
Roman46
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Тогда почему без русских символов такая же ошибка не падает?
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424821
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman46Тогда почему без русских символов такая же ошибка не падает?
Путь совершенно одинаковый?
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424823
Roman46
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Да путь одинаковый.
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424826
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда странно.
Меня вот ещё смущает что UnixFileSystem что-то парсит в US_ASCII, тогда как у вас русский откуда-то. Какая кодировка в системе? KOI8r?
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424836
Roman46
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Я использую библиотеку commons-compress.jar для того, чтобы разархивировать zip архив.

Код: java
1.
2.
3.
4.
5.
6.
 ZipArchiveInputStream zipIn = new ZipArchiveInputStream(input.getContent().getInputStream(), "UTF-8", true);
 ZipArchiveEntry entry = null;
        while ((entry = (ZipArchiveEntry) zipIn.getNextEntry()) != null) {
            FileObject outputFile = VFS.getManager().resolveFile(outputDir.getURL().toExternalForm() + "/" + entry.getName());
            outputFile.getContent().getOutputStream()
        }


Когда в архиве нет файлов с руским именем все разархивируется нормально. Как только попадается один русский символ падает эта ошибка. Код приведен не полностью. Только та часть где летит ошибка
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424847
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но падает же VFS, зачем вы Zip сюда приплетаете? Какая системная кодировка и какая текущая кодировка в Java?
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424860
Roman46
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Как это можно узнать?
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424873
Roman46
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Текущая кодировка Java UTF-8 идущая пл умолчанию. Кодировка файловой системы не знаю, так как код выполняется на сервере.
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424900
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, конечно. Версия 2.0, а package org.apache.commons.vfs, а не org.apache.commons.vfs2
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424901
Roman46
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Определил кодировку операционной системы ansi_x3.4-1968.
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424909
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отлично. ansi_x3.4-1968 это и есть US_ASCII. Выходит у вас в файловой системе не может быть имен с кириллицей.
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424915
Roman46
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Объясните пожалуйста почему так?
...
Рейтинг: 0 / 0
java.lang.StackOverflowError
    #38424923
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman46Объясните пожалуйста почему так?
Что именно "почему так"?
Google -> ansi_x3.4-1968 -> http://en.wikipedia.org/wiki/ASCII
Это стандартный ASCII, который в Java US_ASCII, что мы и видели на stack trace.
Там нет никаких "русских символов" ака кириллицы.
То что VFS из-за этого уходит в StackOverflowError, это исключительно бага VFS. Можно его пропатчить. Можно зарепортить им баг.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / java.lang.StackOverflowError
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]