[CLJ-1154] Compile.java closes out preventing java from reporting exceptions Created: 31/Jan/13 Updated: 14/Aug/13 Resolved: 14/Aug/13
|Affects Version/s:||Release 1.4|
|Fix Version/s:||Release 1.5, Release 1.6|
|Reporter:||Robert (Bobby) Evans||Assignee:||Unassigned|
|Patch:||Code and Test|
Problem: I was trying to compile a project that has some native dependencies (using clojure-maven-plugin version 1.3.13 with Maven 2.0). I forgot to set java.library.path properly so that the native library could be found, and only got an error of
Cause: Compile.java flushes and closes RT.out in the finally block. When out is closed it is unable to write out the stack trace for the UnsatisfiedLinkError that was being thrown. This made it very difficult to debug what was happening.
Solution: Flush, but do not close RT.out in Compile/main. Test is included, but may or may not be worth keeping.
|Comment by Stuart Halloway [ 01/Mar/13 10:45 AM ]|
I have encountered this problem as well. Did not verify the explanation, but sounds reasonable.
|Comment by Alex Miller [ 24/Jul/13 10:39 AM ]|
Updated description a bit and added a patch. The code change is just to stop closing RT.out in Compile.main. The test to invoke Compile and check the stream has an annoying amount of setup and teardown so it's a bit messy. Would love to have more io facilities available (with managed cleanup)!
|Comment by Stuart Sierra [ 02/Aug/13 8:34 AM ]|
Screened. I confirmed with an independent test, by compiling code which spawned a future which would write to STDOUT:
With or without the patch, creating the future prevents the compile process from terminating, but after the patch the output is visible.