Java Apache Commons WordUtils.wrap() создает исключение SecurityException во время выполнения

Хорошо, так после реализации org.apache.commons.lang3.text.WordUtils класс я надеялся иметь возможность использовать WordUtils.wrap(String str, int width) функция. Но я достиг скорости.

Я смог скомпилировать эту программу (которую я должен упомянуть, это апплет) без единой проблемы. Мне просто нужно было установить переменную среды CLASSPATH для ссылки на файл apache jar, а затем через appletviewer запустить программу. Однако, когда я достигаю части кода, которая использует WordUtils.wrap() Функция все становится кислым, и я получаю около 20 строк ошибок времени выполнения в командной строке.

Ошибки:

Caught a SecurityException reading the system property 'awt.toolkit'; the System
Utils property value will default to null.
Caught a SecurityException reading the system property 'file.encoding'; the Syst
emUtils property value will default to null.
Caught a SecurityException reading the system property 'java.awt.fonts'; the Sys
temUtils property value will default to null.
Caught a SecurityException reading the system property 'java.awt.graphicsenv'; t
he SystemUtils property value will default to null.
Caught a SecurityException reading the system property 'java.awt.headless'; the
SystemUtils property value will default to null.
Caught a SecurityException reading the system property 'java.awt.printerjob'; th
e SystemUtils property value will default to null.
Caught a SecurityException reading the system property 'java.class.path'; the Sy
stemUtils property value will default to null.
Caught a SecurityException reading the system property 'java.compiler'; the Syst
emUtils property value will default to null.
Caught a SecurityException reading the system property 'java.endorsed.dirs'; the
 SystemUtils property value will default to null.
Caught a SecurityException reading the system property 'java.ext.dirs'; the Syst
emUtils property value will default to null.
Caught a SecurityException reading the system property 'java.home'; the SystemUt
ils property value will default to null.
Caught a SecurityException reading the system property 'java.io.tmpdir'; the Sys
temUtils property value will default to null.
Caught a SecurityException reading the system property 'java.library.path'; the
SystemUtils property value will default to null.
Caught a SecurityException reading the system property 'java.runtime.name'; the
SystemUtils property value will default to null.
Caught a SecurityException reading the system property 'java.runtime.version'; t
he SystemUtils property value will default to null.
Caught a SecurityException reading the system property 'java.util.prefs.Preferen
cesFactory'; the SystemUtils property value will default to null.
Caught a SecurityException reading the system property 'java.vm.info'; the Syste
mUtils property value will default to null.
Caught a SecurityException reading the system property 'user.country'; the Syste
mUtils property value will default to null.
Caught a SecurityException reading the system property 'user.region'; the System
Utils property value will default to null.
Caught a SecurityException reading the system property 'user.dir'; the SystemUti
ls property value will default to null.
Caught a SecurityException reading the system property 'user.home'; the SystemUt
ils property value will default to null.
Caught a SecurityException reading the system property 'user.language'; the Syst
emUtils property value will default to null.
Caught a SecurityException reading the system property 'user.name'; the SystemUt
ils property value will default to null.
Caught a SecurityException reading the system property 'user.timezone'; the Syst
emUtils property value will default to null.

Вот строка кода, которая вызывает все эти проблемы:

String strWrap = WordUtils.wrap("A really really really really really long sentence.", 50);

Что тут происходит?

2 ответа

Решение

Как насчет передачи разделителя строк в качестве аргумента для обхода доступа SystemUtils:

String strWrap = WordUtils.wrap("A really really really really really long sentence.", 50, "\n", false);

Ваш код использует WordUtils, который вызывает SystemUtils, чтобы найти разделитель строк, используемый вашей системой:

newLineStr = SystemUtils.LINE_SEPARATOR;

SystemUtils пытается прочитать системные свойства, которые апплету, вероятно, не разрешено читать из-за ограничений безопасности в браузере.

Документация для SystemUtils гласит:

Если системное свойство не может быть прочитано из-за ограничений безопасности, соответствующему полю в этом классе будет присвоено значение null и сообщение будет написано System.err

Другие вопросы по тегам