From: Johan V. N. <jo...@qo...> - 2014-10-15 12:03:59
|
Dear Jython users/devs, I had an application, working fine with 2.7b2. Same application with 2.7b3 fails: the command ScriptEngineManager.getEngineByName("python") returns null. Environment: * Small OSGi application (see binary & source links below) * Uses JSR-223 to get a ScriptEngine for python Steps to reproduce (good run with 2.7b2): * Download http://www.qtc.be/TestJythonOSGi.zip * Extract in any directory (This archive is for Windows x64 and Java x64 only. Other OS/VM on request.) * Adjust the file TestJythonOSGi.ini to point to a 64-bit VM on your machine. Take java.exe, not javaw.exe in order to see the console. * Run TestJythonOSGi.exe * You should see how Jython initializes (producing the cachedir). * The last line will say "2", being the result of scriptEngine.eval("1+1", context). * Then the ">Exit" promp appears, type shutdown or exit. Steps to reproduce (bad run with 2.7b3): * Remove the cachedir (just to make sure) * Goto TestJythonOSGi\plugins\TestJythonOSGi_1.0.0.201410151320\lib * The application uses jython-2.7-b2.jar, but the directory contains two other files: o The original jython-2.7-b2-realb2.jar (identical to the one above) o The jython-2.7-b2-renamedb3.jar (with is the b3 version) * Remove jython-2.7-b2.jar * Rename jython-2.7-b2-renamedb3.jar to jython-2.7-b2.jar * You now essentially have the same app, but with b3 (fakely renamed to b2) * Execute in the same manner as above. * Instead of "2", the last line will now say "getEngineByName returned null" Already tried: * I debugged into the application. It seems that the ScriptEngine is registered fine. The javax ScriptEngineManager finds the ScriptEngineFactory. When it then requests the creation of the ScriptEngine, null is returned. I was unable to trace into this. * I tried by building my own jython-2.7-b3+ head version. Behaviour is identical. * The reproduction scenario above replaces the lib without recompilation. One could assume that this causes issues as well. Nicely rebuilding with the other library results in the same issue, though. Sources: * The file http://www.qtc.be/TestJythonOSGiSources.zip contains two Eclipse Kepler projects * The relevant source file is TestJythonOSGi\src\testjythonosgi\Activator.java * Can't immediately think of a way to make it easier for others to debug :( Questions / remarks: * Is the behavior of b3 different from b2 with respect to OSGi? * Is the issue caused by additional requirements (I suddenly see a lot of netty, bouncycastle etc turning up in b3). * I also see that the b3.jar contains duplicate files (same file occurring multiple times within the MANIFEST directory.) As far as I see, no essential files are involved in this issue. Could it be an issue anyway? Thanks for any assistance, Johan |