From: Alan K. <jyt...@xh...> - 2012-10-16 23:33:54
|
[Aaron] > Here is the (ugly) patch that fixes the problem: > http://code.google.com/p/okapi/source/detail?r=94a4cf4b997a665dce76ef3f44447a2f24b9de02&name=dev As far as I can see, the problematic data is being produced in Java, and you have introduced a java hack, written in java to address the issue, before the data is passed to jython. Specifically, your fix is this 59 59 URL url = getClass().getResource("default.fprm"); 60 60 try { 61 - params.load(url.toURI(), false); 61 + // Replace the slashes to work around jython issues 62 + params.load(new URI(url.toString().replace('\\', '/')), false); 62 63 } 63 64 catch ( URISyntaxException e ) { So getClass().getResource("blah") on your particular JVM + OS combination (running inside a servlet container?) has returned a string containing windows slashes ("\"). Jython interprets "\" as an escape slash (as do most languages, including java, as is illustrated by the first parameter to your replace() method). So when you pass a string to jython that contains escape slashes, you can't expect jython to treat them as anything other than escape slashes, no matter what the operating system. http://docs.python.org/reference/lexical_analysis.html#string-literals The string you are passing to jython is: jar:file:C:\Users\username\path\to\jar\project.jar!/path/to/resource/somefile The following are special characters \U (as appears in \Users) jython interprets as a 32-bit Unicode value \u (as appears in \username) jython interprets as a 16-bit Unicode value \t (as appears in \to) jython interprets as a tab character I think that you need to get to bottom of why your servlet-container+JVM-version+Windows-OS combination returns Windows slashes, aka jython escape slashes, from the getResource() call. When you resolve that issue, your problems will disappear. And they are not jython problems. Alan. |