There's a bug in the latest version of JGameBase (0.45 patchset 2): when you try to run a game that's inside of a compressed archive (like 7z), JGameBase launches the shell script of the emulator with the temp directory path duplicated, as in "emulator.sh /tmp/jgamebase/tmp/jgamebase/filename.ext".
I've tracked the problem via debugging with Eclipse, and I've found its cause. The problem is that in function play() from Game.java (it starts at line 1000), when isAlreadyExtracted is false and then game.getFileToRun().equals("") is false, line 1036 is executed and that is the one that is wrong, in my opinion. That line is currently:
fileToRun = new File(TempDir.get(), game.getFileToRun()).toString();
When it should be instead:
fileToRun = game.getFileToRun();
Because after that, at line 1061, when the script is about to be launched, the temp directory path is unconditionally added:
command = script.toString() + " " + new File(TempDir.get(), fileToRun).toString();
So if the previous line is as it currently is, the temp directory path is added twice.