[jdom-interest] JDOM and Android
Rolf Lear
jdom at tuis.net
Mon Apr 16 21:51:59 PDT 2012
I have been down that road, and it does not work....
Because the file URL's are still not readable.... here's a test trace...
Note how the failure is buried in a 'caused by' where the important
lines are:
Caused by: java.io.FileNotFoundException:
/android_asset/xsdcomplex/multi_main.xsd: open failed: ENOENT (No such
file or directory)
at libcore.io.IoBridge.open(IoBridge.java:406)
at java.io.FileInputStream.<init>(FileInputStream.java:78)
at libcore.net.url.FileURLConnection.connect(FileURLConnection.java:82)
at
libcore.net.url.FileURLConnection.getInputStream(FileURLConnection.java:181)
at java.net.URL.openStream(URL.java:462)
at
org.jdom2.input.sax.XMLReaderXSDFactory.getSchemaFromURL(XMLReaderXSDFactory.java:195)
... 15 more
org.jdom2.JDOMException: Unable to read Schema URL
file:///android_asset/xsdcomplex/multi_main.xsd
at
org.jdom2.input.sax.XMLReaderXSDFactory.getSchemaFromURL(XMLReaderXSDFactory.java:197)
at
org.jdom2.input.sax.XMLReaderXSDFactory.<init>(XMLReaderXSDFactory.java:272)
at
org.jdom2.test.cases.input.sax.TestXMLReaderXSDFactory.testXMLReaderXSDFactoryFileArray(TestXMLReaderXSDFactory.java:80)
at
org.jdom2.test.cases.input.sax.TestXMLReaderXSDFactoryTT.testXMLReaderXSDFactoryFileArray(TestXMLReaderXSDFactoryTT.java:28)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at
android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:545)
at
android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1551)
Caused by: java.io.FileNotFoundException:
/android_asset/xsdcomplex/multi_main.xsd: open failed: ENOENT (No such
file or directory)
at libcore.io.IoBridge.open(IoBridge.java:406)
at java.io.FileInputStream.<init>(FileInputStream.java:78)
at libcore.net.url.FileURLConnection.connect(FileURLConnection.java:82)
at
libcore.net.url.FileURLConnection.getInputStream(FileURLConnection.java:181)
at java.net.URL.openStream(URL.java:462)
at
org.jdom2.input.sax.XMLReaderXSDFactory.getSchemaFromURL(XMLReaderXSDFactory.java:195)
... 15 more
Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file
or directory)
at libcore.io.Posix.open(Native Method)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
at libcore.io.IoBridge.open(IoBridge.java:390)
... 20 more
On 17/04/2012 12:00 AM, Joe Bowbeer wrote:
> You'll need to put the data in assets
>
> http://stackoverflow.com/questions/4820816/how-to-get-uri-from-an-asset-file
>
> http://stackoverflow.com/questions/4789325/android-path-to-asset-txt-file
>
> and use getResources().getAssets().open()
>
> Or you could put the data in res/raw and use
> getResources().openRawResource()
>
> .. but res/raw does not support a nested file structure.
>
> Or maybe you could do something crazy with a custom class loader:
>
> http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html
>
>
> --Joe
>
>
> On Mon, Apr 16, 2012 at 8:08 PM, Rolf Lear <jdom at tuis.net
> <mailto:jdom at tuis.net>> wrote:
>
> Hi all.
>
> I am having some limited success with the Android testing. I have
> run in to an issue through which could really use some input from
> experienced Android developers.
>
> Are there any on JDOM-interest with some time to spare?
>
> My issue right now is that the JUnit tests are mostly passing, but a
> number of them rely on using
> ClassLoader.getSystemResource(__"path/to/file.xml") to load
> resources as a URL.
>
> It is improtant to keep it as a URL because many of these tests rely
> on internal DTD's and XSD's, which, in turn mean that when they are
> processed the input file's URL will be used as a base for a relative
> location of the DTD/XSD.
>
> In other words, I need to keep access to these files as a URL....
>
> But, ClassLoader.getSystemResource(__...) is returning null on Android.
>
> I think it is related to
> http://code.google.com/p/__android/issues/detail?id=10076
> <http://code.google.com/p/android/issues/detail?id=10076>
>
> But, I can't find a good way to work around the issue....
>
> So, If there's some experienced Android developer who can shed some
> light in to this particular dark place, I would appreciate it.
>
> For the record, I have a full test-suite available for any Android
> developers who happen to use eclipse. It fully compiled, loads, and
> I am running a 'Test' Project on a 4.0.3 emulator.
>
> I can, in theory, help you bootstrap the environment in your eclipse
> pretty easily... if needed.
>
> Rolf
>
More information about the jdom-interest
mailing list