What is the best Way for Interfacing with Ogre(C++) in a Java Application?

I have a Java Application and want to interface Ogre inside it.
Specifically Ogre is a 3D Game engine library which has plenty of complex C++ objects inside it.I have got multiple options to accomplish this

1.)Use Raw JNI (Tough as JNI is quite complex)

2.)Use SWIG + JNI (Somewhat simple...but still JNI is involved)

3.)Use Lua and NO JNI (Use lua binding to Ogre)...Basically using Lua helps because interfacing a C++ lib with Lua is much more easier and calling Lua from java wouldnt be too hard.

4.)Use Ogre4j (A Java binding to Ogre using JNI...but this project isnt so updated with the latest Ogre version)

Which of these/looks like the best option keeping in mind future maintenance/upgrades to Ogre?

Update:
I've heared about a 6th option, which is "inspired by JNA": BridJ http://code.google.com/p/bridj/. The FAQ and the Wiki explain well the differences and the reasoning behind it. BridJ is active and open source ( BSD and Apache licence).

Email codedump link for What is the best Way for Interfacing with Ogre(C++) in a Java Application?