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