Thanks Uwe (and others). We'll adapt. Is there any interest here in knowing if there are any other problems regarding Lucene on Android? From what I see, it is the first mobile platform on which Lucene can run.
-- DM On Dec 5, 2010, at 5:16 AM, Uwe Schindler wrote: > Hi DM, > > In Lucene 3.0.3, NativeFSLockFactory no longer aquires a test log and does > not need the process ID anymore, so java.lang.management package is no > longer used. > > In general, Lucene Java is compatible to the Java 5 SE specification. > Android uses Harmony and therefore we cannot guarantee compatibility as > Harmony is not TCK tested (but we do with latest versions, soon there will > also be tests on Hudson with Harmony). But only latest versions of Harmony > are really compatible with Lucene, previous versions fail lots of tests (ask > Robert), and Android phones use very antique versions of Harmony - it is not > even sure, that the Java5 Memory Model is correctly implemented in Dalvik! > > About 3.0.2: Of course this version even works with latest Harmony, so > Harmony has java.lang.management package (which is java.lang!!!), so the bug > is in Android, simply by excluding a SE package. So you should open bug > report at Google and then hope that they fix it and all the phone > manufacturers like Motor-Roller will update their Android versions. > > For your problem: The easy workaround is using Lucene 3.0.3 or simply use > another LockFactory (Andoid is single user so even NoLockFactory would be > fine in most cases). This are the same limitations like with the NFS > filesystem. Just use FSDir.open(dir, lockFactory). > > Uwe > > ----- > Uwe Schindler > H.-H.-Meier-Allee 63, D-28213 Bremen > http://www.thetaphi.de > eMail: u...@thetaphi.de > >> -----Original Message----- >> From: DM Smith [mailto:dm-sm...@woh.rr.com] >> Sent: Sunday, December 05, 2010 12:16 AM >> To: dev@lucene.apache.org >> Subject: Exception in migrating from 2.9.x to 3.0.2 on Android >> >> The current code that works on Android with 2.9.1, but fails with 3.0.2: >> >> Directory dir = FSDirectory.open(file); >> ... >> do something with directory >> ... >> >> The error we're seeing is: >> 12-04 21:34:41.629: WARN/System.err(23160): >> java.lang.NoClassDefFoundError: >> java.lang.management.ManagementFactory >> 12-04 21:34:41.639: WARN/System.err(23160): at >> org.apache.lucene.store.NativeFSLockFactory.acquireTestLock(NativeFSLock >> Factory.java:87) >> 12-04 21:34:41.639: WARN/System.err(23160): at >> org.apache.lucene.store.NativeFSLockFactory.makeLock(NativeFSLockFactor >> y.java:142) >> 12-04 21:34:41.649: WARN/System.err(23160): at >> org.apache.lucene.store.Directory.makeLock(Directory.java:106) >> 12-04 21:34:41.649: WARN/System.err(23160): at >> org.apache.lucene.index.IndexWriter.init(IndexWriter.java:1058) >> >> Turns out Android does not have >> java.lang.management.ManagementFactory. >> >> There are several work arounds in client code, but not sure what is best. >> >> The bigger question is whether and how Lucene should be modified to >> accommodate? >> >> Ultimately FSDirectory.open does the following: >> if (Constants.WINDOWS) { >> return new SimpleFSDirectory(path, lockFactory); >> } else { >> return new NIOFSDirectory(path, lockFactory); >> } >> >> Should Android be a supported client OS? >> >> If so, wouldn't it be better not to have OS specific if-then-else and use >> reflection or something else? >> >> Thanks, >> DM >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional >> commands, e-mail: dev-h...@lucene.apache.org > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org > For additional commands, e-mail: dev-h...@lucene.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org