2012-09-26 6 views
-1

그래야 클래스를 구현 한 후 WordUtils.wrap(String str, int width) 함수를 사용할 수 있기를 바랬습니다. 하지만 속도가 느려졌습니다.Java Apache Commons 런타임 중에 WordUtils.wrap()이 SecurityException을 throw합니다.

단일 문제없이이 프로그램을 컴파일 할 수있었습니다 (애플릿을 사용해야 함). 방금 아파치 jar 파일을 참조하는 CLASSPATH 환경 변수를 설정하고 appletviewer를 실행하여 프로그램을 실행해야했습니다. 그러나 함수를 사용하는 코드 부분에 도달하면 모든 것이 사납게 변하고 명령 프롬프트에서 약 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는 브라우저의 보안 제한으로 인해 애플릿이 읽을 수없는 시스템 속성을 읽으려고합니다. – DNA

+0

아니요 내 코드 (200line 파일)에서 SystemUtils를 사용하고 WordUtils 만 사용할 수 있습니까? – Nigh7Sh4de

답변

2

방법 SystemUtils 접속 우회 인수로 개행 통과 소개 :

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

내 보안 문제가 해결되었습니다. 그러나 나는 다른 문제가있다, 재미 있지 않다 프로그래밍? : D ... 좋아, 그래서 당신의 예를 사용하고 개행을 넣는 대신 문자 그대로 아무것도 넣지 않았습니다. 대신 : " 정말 정말 정말 진짜 긴 문장" 내가있어 : "정말로 reallylally reallylong 문장"? – Nigh7Sh4de

+0

아마도 메시지를 표시하는 컨트롤에 CRLF가 필요합니다. "\ n"을 "\ r \ n"으로 바꾸십시오. 시스템 정의 라인 구분 기호를 사용할 수 없다는 단점이 있습니다. 당신은 추측해야합니다. –

+0

알았어 그래서 일부 파고 (probobly이 전에 모든해야한다) ... 내 명령 : "Graphics.drawString()"새 줄을 삽입 할 수 없습니다 또는 다음 줄로 건너 뛸 수, 그것은 단지 문자열을 걸릴 수 있습니다. 한 줄에 모든 것을 픽셀 이미지로 출력합니다. 어쨌든 모든 도움을 주셔서 감사합니다 :) – Nigh7Sh4de

1

코드는 시스템에 의해 사용되는 행 분리를 찾기 위해 SystemUtils를 호출 WordUtils 사용

newLineStr = SystemUtils.LINE_SEPARATOR; 

SystemUtils 인해에, 애플릿은 아마도 읽을 수 없습니다 시스템 속성을 읽을려고 브라우저의 보안 제한 사항.

SystemUtils의 documentation는 말한다 : 시스템 속성이 보안 제한 사항으로 인해 읽을 수없는 경우

,이 클래스의 해당 필드가 null로 설정하고 메시지 가 System.err

에 기록됩니다
+0

그렇다면 애플릿에이 사용 권한을 부여하려면 어떻게해야합니까? – Nigh7Sh4de

+0

SystemUtils는 오류를 포착하고 관계없이 계속 수행하므로 필요하지 않습니다. 'WordUtils.wrap() '에 대한 호출이 성공합니까? – DNA

+0

불행히도 "오류 잡기"에 의해 SystemUtils는 WordUtils.wrap() 함수가 제 텍스트를 감싸는 방법을 찾아 다시 실행하는 것을 중지 시켰습니다. 그럼, 내가 추가 할 수있는 코드의 다른 줄은 무엇입니까? 또는 더 나은 방법을 알고 있다면 어떻게하면 텍스트를 감쌀 수 있습니까? – Nigh7Sh4de