As far as I can see, your original change had a bug in that it never actually closed stderr, however even after fixing that it still doesn't work. I think you need to make this change at least:
diff --git a/modules/juce_core/native/juce_posix_SharedCode.h b/modules/juce_core/native/juce_posix_SharedCode.h
index 23a5334..88def31 100644
@@ -1023,12 +1023,12 @@ public:
// we're the child process..
close (pipeHandles); // close the read handle
- if ((streamFlags | wantStdOut) != 0)
+ if ((streamFlags & wantStdOut) != 0)
dup2 (pipeHandles, 1); // turns the pipe into stdout
- if ((streamFlags | wantStdErr) != 0)
+ if ((streamFlags & wantStdErr) != 0)
dup2 (pipeHandles, 2);
Eventually after printing out what Introjucer was trying to execute, I figured out that I was missing the zentiy file dialog program. My system has KDE, but I'm running the XFCE window manager (an old Linux box with little power). Maybe your installation notes can say that a full install of Gnome is required if not using the Gnome or KDE window managers?