2012-09-26 55 views
-1

在執行org.apache.commons.lang3.text.WordUtils類之後好了,我希望能夠使用WordUtils.wrap(String str, int width)函數。但我達到了減速。Java Apache Commons WordUtils.wrap()在運行時拋出SecurityException

我能夠編譯這個程序(我應該提到的是一個小程序),沒有一個單一的問題。我只需設置一個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); 

這裏發生了什麼?

+0

如何向我們展示更多代碼?你的代碼是否直接使用SystemUtils?由於瀏覽器中的安全限制,SystemUtils正試圖讀取applet可能不允許讀取的系統屬性。 – DNA

+0

沒有在我的代碼(這是一個200行文件)在哪裏使用SystemUtils,只是WordUtils ...? – Nigh7Sh4de

回答

2

如何使在線分離器作爲參數繞過SystemUtils訪問:

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

真棒,解決了我的安全問題!然而,沒有我有不同的問題,是不是編程樂趣? :D ...好吧,我用你的例子,而不是放入一個換行符,它沒有任何東西,從字面上什麼都沒有。 取而代之:「 真的很真 真的很真 長句子」 我得到了: 「真的真的真的很長句子」? – Nigh7Sh4de

+0

也許顯示消息的控件需要CRLF。嘗試用「\ r \ n」替換「\ n」。這是不能使用系統定義的行分隔符的缺點。你必須猜測。 –

+0

好吧,所以我做了一些挖掘(probobly應該在所有這一切之前)......原來我的命令:「Graphics.drawString()」不能插入新行或跳到下一行,它只能接受一個字符串並將其作爲一條線上的像素圖像輸出。無論如何感謝您的幫助:) – Nigh7Sh4de

1

代碼使用WordUtils其中,以找到您的系統使用的行分隔符調用SystemUtils

newLineStr = SystemUtils.LINE_SEPARATOR; 

SystemUtils正在努力讀書,一個小程序可能不能讀取系統屬性,因瀏覽器中的安全限制。

documentation爲SystemUtils說:

如果系統屬性不能讀取由於安全限制,在這個類 相應字段將被設置爲null和消息 將被寫入System.err

+0

好吧,那麼我需要做些什麼來給我的applet這個權限? – Nigh7Sh4de

+0

您可能不需要,因爲SystemUtils捕獲錯誤並進行無論如何。對「WordUtils.wrap()」的調用是否成功? – DNA

+0

不幸的是,通過「捕獲錯誤」SystemUtils也停止了WordUtils.wrap()函數的執行,使我回到了原點,找出了包裝我的文本的方法。那麼,我可以添加哪些其他代碼行?或者,如果您知道更好的方法,我還能如何包裝文本? – Nigh7Sh4de

相關問題