Message11502
If you run Jython in a directory containing a subdirectory called test containing a compiled class Test and try to import it you will receive a NPE. It is caused in org.python.core.PyString.encode_UnicodeEscape as null is passed in by the import logic. e.g.
james@james-desktop ~/Desktop/JyTest
% tree
.
├── jython-standalone-2.7.1.jar
└── test
├── Test.class
└── Test.java
1 directory, 3 files
james@james-desktop ~/Desktop/JyTest
% java -jar jython-standalone-2.7.1.jar
Jython 2.7.1 (default:0df7adb1b397, Jun 30 2017, 19:02:43)
[OpenJDK 64-Bit Server VM (Oracle Corporation)] on java1.8.0_131
Type "help", "copyright", "credits" or "license" for more information.
>>> from test import Test
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
java.lang.NullPointerException
at org.python.core.PyString.encode_UnicodeEscape(PyString.java:339)
at org.python.core.imp.loadFromSource(imp.java:627)
at org.python.core.imp.find_module(imp.java:551)
at org.python.core.imp.import_next(imp.java:838)
at org.python.core.imp.import_module_level(imp.java:957)
at org.python.core.imp.importName(imp.java:1057)
at org.python.core.ImportFunction.__call__(__builtin__.java:1280)
at org.python.core.PyObject.__call__(PyObject.java:450)
at org.python.core.__builtin__.__import__(__builtin__.java:1232)
at org.python.core.imp.importFromAs(imp.java:1149)
at org.python.core.imp.importFrom(imp.java:1124)
at org.python.pycode._pyx1.f$0(<stdin>:1)
at org.python.pycode._pyx1.call_function(<stdin>)
at org.python.core.PyTableCode.call(PyTableCode.java:171)
at org.python.core.PyCode.call(PyCode.java:18)
at org.python.core.Py.runCode(Py.java:1614)
at org.python.core.Py.exec(Py.java:1658)
at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:276)
at org.python.util.InteractiveInterpreter.runcode(InteractiveInterpreter.java:131)
at org.python.util.InteractiveInterpreter.runsource(InteractiveInterpreter.java:116)
at org.python.util.InteractiveInterpreter.runsource(InteractiveInterpreter.java:62)
at org.python.util.InteractiveConsole.push(InteractiveConsole.java:187)
at org.python.util.InteractiveConsole._interact(InteractiveConsole.java:168)
at org.python.util.InteractiveConsole.interact(InteractiveConsole.java:126)
at org.python.util.jython.run(jython.java:419)
at org.python.util.jython.main(jython.java:142)
java.lang.NullPointerException: java.lang.NullPointerException
>>>
The simple fix is to check for null at the start of encode_UnicodeEscape then return null and that make this work but i'm not sure if that's the best fix. |
|
Date |
User |
Action |
Args |
2017-07-26 20:54:59 | jamesmudd | set | recipients:
+ jamesmudd |
2017-07-26 20:54:59 | jamesmudd | set | messageid: <1501102499.09.0.672128579778.issue2612@psf.upfronthosting.co.za> |
2017-07-26 20:54:58 | jamesmudd | link | issue2612 messages |
2017-07-26 20:54:57 | jamesmudd | create | |
|