Issue2131
Created on 2014-04-24.14:25:36 by aryeh, last changed 2014-06-30.17:47:36 by zyasoft.
msg8305 (view) |
Author: (aryeh) |
Date: 2014-04-24.14:25:35 |
|
The attached script produces an error which I reported on the ImageJ mailing list.
Here is what I wrote there:
I have the following snippet in my code, designed to create an output directory if it does not already exist:
91 outDir = os.path.join(inputDir,"zPlots/")
92 print outDir
93 if not os.path.exists(outDir):
94 os.makedirs(outDir)
If the directory exists, this runs ok. If I skip line 93 and make the directory withotu checking,
If the directory does not exist, it produces an error.
File "<iostream>", line 93, in <module>
File "/Applications/local/fiji/Fiji.app/jars/jython-2.7-bl.jar /Lib/posixpath.py", line 171, in exists
File "/Applications/local/fiji/Fiji.app/jars/jython-2.7-bl.jar /Lib/posixpath.py", line 171, in exists
java.lang.AbstractMethodError: org.python.modules.posix.PythonPOSIXHandler.error(Ljnr/constants/platform/Errno;Ljava/lang/String;)V
at jnr.posix.BaseNativePOSIX.stat(BaseNativePOSIX.java:309)
There is these a long list of at jnr.posix ... and org.posix.... etc , which I have not copied.
(BTW -- is there a way to copy the text from the error display of the Fiji script editor?)
I also tried
outDir = inputDir + "zPlots/"
with the same problem.
I tried also to use try and except on this.
except AbstractMethodError seems to catch this.
I suppose I could catch any failure and assume that the directory exists, but this does not seem the correct
way to do this.
|
msg8498 (view) |
Author: Jim Baker (zyasoft) |
Date: 2014-05-21.23:12:43 |
|
Maybe a SecurityManager problem? Jython has significantly reduced functionality for interacting with the underlying OS without full Java Native Runtime (JNR) support.
Ideally we could have a test that reproduces the issue that doesn't depend on ImageJ.
|
msg8836 (view) |
Author: Jim Baker (zyasoft) |
Date: 2014-06-28.04:04:13 |
|
Closing this out as not able to reproduce - os.path.exists is widely used by Jython code, there must be something else going on, like a SecurityManager or other problem.
One possible workaround: http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#exists(java.nio.file.Path,%20java.nio.file.LinkOption...)
|
msg8845 (view) |
Author: (aryeh) |
Date: 2014-06-29.06:46:04 |
|
On 6/28/14, 7:04 AM, Jim Baker wrote:
> Jim Baker added the comment:
>
> Closing this out as not able to reproduce - os.path.exists is widely used by Jython code, there must be something else going on, like a SecurityManager or other problem.
>
> One possible workaround: http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#exists(java.nio.file.Path,%20java.nio.file.LinkOption...)
>
> ----------
> resolution: -> invalid
> status: open -> pending
>
>
This turned out to be a problem in Fiji (ImageJ). There was a conflict
with the ruby interpreter, which have since been resolved.
Best regards
--aryeh
--
Aryeh Weiss
Faculty of Engineering
Bar Ilan University
Ramat Gan 52900 Israel
Ph: 972-3-5317638
FAX: 972-3-7384051
|
msg8853 (view) |
Author: Jim Baker (zyasoft) |
Date: 2014-06-30.17:47:36 |
|
Aryeh, thanks for finding the actual problem!
|
|
Date |
User |
Action |
Args |
2014-06-30 17:47:36 | zyasoft | set | status: pending -> closed messages:
+ msg8853 |
2014-06-29 06:46:05 | aryeh | set | messages:
+ msg8845 |
2014-06-28 04:04:13 | zyasoft | set | status: open -> pending resolution: invalid messages:
+ msg8836 |
2014-05-21 23:12:43 | zyasoft | set | nosy:
+ zyasoft messages:
+ msg8498 |
2014-04-24 14:25:36 | aryeh | create | |
|