I can't reproduce this. What version of the cassandra deb are you using, exactly, and why are you symlinking or copying jna.jar into /usr/share/cassandra? The initscript should be adding /usr/sahre/java/jna.jar to the classpath, and that should be all you need.
The failure you see with o.a.c.cache.FreeableMemory is not because the jre can't find the class, it's just that it can't initialize the class (because it needs JNA, and it can't find JNA). p On Wed, Nov 2, 2011 at 4:42 AM, Peter Tillotson <slatem...@yahoo.co.uk>wrote: > see below > * JAVA_HOME=/usr/lib/jvm/java-6-openjdk > works > -- > Reading the documentation over at Datastax > “The Debian and RPM packages of Cassandra install JNA automatically” > > http://www.datastax.com/dev/blog/whats-new-in-cassandra-1-0-improved-memory-and-disk-space-management > > And indeed the Debian package depends on jna, and the > /etc/init.d/cassandra looks as though in adds /usr/share/java/jna.jar to > the classpath, and here is the but. > > If I copy or symlink jna.jar into: > * /usr/share/cassandra > * /usr/share/cassandra/lib > Whenever a column family initialises I get: > java.lang.NoClassDefFoundError: Could not initialize class > org.apache.cassandra.cache.FreeableMemory > > This suggests to me that: > 1) By default, for me at least, in Debian jna.jar is not on the classpath > 2) There is an additional classpath issue > jar -tf apache-cassandra.jar | grep "FreeableMemory" succeeds > > I'm running on: > * Ubuntu 10.04 x64 > * JAVA_HOME=/usr/lib/jvm/java-6-sun > > Full stack traces: > java.lang.NoClassDefFoundError: Could not initialize class > com.sun.jna.Native > at com.sun.jna.Pointer.<clinit>(Pointer.java:42) > at > org.apache.cassandra.cache.SerializingCache.serialize(SerializingCache.java:92) > at > org.apache.cassandra.cache.SerializingCache.put(SerializingCache.java:154) > at > org.apache.cassandra.cache.InstrumentingCache.put(InstrumentingCache.java:63) > at > org.apache.cassandra.db.ColumnFamilyStore.cacheRow(ColumnFamilyStore.java:1150) > at > org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1174) > at > org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1131) > at org.apache.cassandra.db.Table.getRow(Table.java:378) > at > org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:61) > at > org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:797) > at > org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1265) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:662) > INFO [pool-1-thread-1] 2011-11-02 10:26:46,738 Memtable.java (line 177) > CFS(Keyspace='BigSet', ColumnFamily='theKeys') liveRatio is > 18.20062753783684 (just-counted was 16.960966424636872). calculation took > 408ms for 8169 columns > ERROR [ReadStage:33] 2011-11-02 10:26:56,599 AbstractCassandraDaemon.java > (line 133) Fatal exception in thread Thread[ReadStage:33,5,main] > java.lang.NoClassDefFoundError: Could not initialize class > org.apache.cassandra.cache.FreeableMemory > at > org.apache.cassandra.cache.SerializingCache.serialize(SerializingCache.java:92) > at > org.apache.cassandra.cache.SerializingCache.put(SerializingCache.java:154) > at > org.apache.cassandra.cache.InstrumentingCache.put(InstrumentingCache.java:63) > at > org.apache.cassandra.db.ColumnFamilyStore.cacheRow(ColumnFamilyStore.java:1150) > at > org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1174) > at > org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1131) > at org.apache.cassandra.db.Table.getRow(Table.java:378) > at > org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:61) > at > org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:797) > at > org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1265) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > >