프로그램/android

jdom 1.1.1 version 안드로이드용 패치

mulderu 2010. 4. 1. 11:36
android 에서 jdom 을 사용하고자 하는 분들은 몇가지 애로 사항이 있습니다...
예전 버전에서는 jdom  이 Dalvik vm 에서 바로 에러가 났는데, 이유는 rmi exception class 문제 였습니다.
최신 버전에서는 rmi exception 을 소스레벨에서 필요하면 로딩 하도록 패치해서, runtime error 는 제거 되었습니다.
그러나... 
최신 버전을 받았는데도 xml 에 attribute를 파싱하는 부분에서 에러가 납니다.

이것땜에 고생하는 개발자가 많으실것 같아서... 소스를 받아서 일부 패치한 jar를 첨부 해 드립니다.

아래 참조 url 을 보시면 해결책이 자세히 나옵니다.. (저도 이곳의 내용을 기반으로 패치 하였습니다.)



> 07-28 14:54:10.354: ERROR/Global(725): java.lang.StringIndexOutOfBoundsException
> 07-28 14:54:10.354: ERROR/Global(725):     at java.lang.String.substring(String.java:1571)
> 07-28 14:54:10.354: ERROR/Global(725):     at org.jdom.input.SAXHandler.startElement(SAXHandler.java:568)
> 07-28 14:54:10.354: ERROR/Global(725):     at org.apache.harmony.xml.ExpatParser.startElement(ExpatParser.java:145)
> 07-28 14:54:10.354: ERROR/Global(725):     at org.apache.harmony.xml.ExpatParser.append(Native Method)
> 07-28 14:54:10.354: ERROR/Global(725):     at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:506)
> 07-28 14:54:10.354: ERROR/Global(725):     at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:467)
> 07-28 14:54:10.354: ERROR/Global(725):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:329)
> 07-28 14:54:10.354: ERROR/Global(725):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:286)
> 07-28 14:54:10.354: ERROR/Global(725):     at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518)
> 07-28 14:54:10.354: ERROR/Global(725):     at org.jdom.input.SAXBuilder.build(SAXBuilder.java:865)
> 07-28 14:54:10.354: ERROR/Global(725):     at com.tlabs.avf.AVFGlobal.addInputStreams(AVFGlobal.java:538)
> 07-28 14:54:10.354: ERROR/Global(725):     at com.tlabs.avf.AVFGlobal.initialize(AVFGlobal.java:630)
> 07-28 14:54:10.354: ERROR/Global(725):     at com.tlabs.avf.AVFMain.init(AVFMain.java:122)
> 07-28 14:54:10.354: ERROR/Global(725):     at com.tlabs.avf.test.AVFMainTest.onCreate(AVFMainTest.java:78)
> 07-28 14:54:10.354: ERROR/Global(725):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
> 07-28 14:54:10.354: ERROR/Global(725):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
> 07-28 14:54:10.354: ERROR/Global(725):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
> 07-28 14:54:10.354: ERROR/Global(725):     at android.app.ActivityThread.access$1800(ActivityThread.java:112)
> 07-28 14:54:10.354: ERROR/Global(725):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
> 07-28 14:54:10.354: ERROR/Global(725):     at android.os.Handler.dispatchMessage(Handler.java:99)
> 07-28 14:54:10.354: ERROR/Global(725):     at android.os.Looper.loop(Looper.java:123)
> 07-28 14:54:10.354: ERROR/Global(725):     at android.app.ActivityThread.main(ActivityThread.java:3948)
> 07-28 14:54:10.354: ERROR/Global(725):     at java.lang.reflect.Method.invokeNative(Native Method)
> 07-28 14:54:10.354: ERROR/Global(725):     at java.lang.reflect.Method.invoke(Method.java:521)
> 07-28 14:54:10.354: ERROR/Global(725):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
> 07-28 14:54:10.354: ERROR/Global(725):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
> 07-28 14:54:10.354: ERROR/Global(725):     at dalvik.system.NativeStart.main(Native Method)



붉은색 부분이 에러를 내는 부분입니다.
이부분을 패치한 버전의 jar를 올립니다.