Nevermind about spec2 then. Spec2's not going to fix a bad ey file.
As for the java error/NPE, it's not informative to you because it's not meant to be. It's an uncaught exception generated by a problem that I didn't anticipate. It's informative, however, to the programmer who's trying to help you - namely me, because I can look up the stack trace and find out what I programmed incorrectly.
In particular, the error and the first line of the stack trace
at org.enigma.EnigmaRunner.compile(EnigmaRunner.java:519)
tells me the problem is a null somewhere in the following line of code:
if (!es.selCompiler.outputexe.equals("$tempfile")) //$NON-NLS-1$
which means that one of the following is null:
EnigmaRunner.es
EnigmaSettings.selCompiler
TargetHandler.outputexe
It can't be es because just a couple lines up I try to access it, so it would have reported an NPE sooner.
It can't be selCompiler because a couple lines up I do a null check on it and fail out.
Which leaves outputexe.
outputexe is populated in TargetHandler.findCompilers, this line of code:
ps.outputexe = node.getMC("Run-output",null); //$NON-NLS-1$
Where "node.getMC" fetches the value of the desired key from the yaml file, defaulting to the second argument if none is found. Obviously, I wasn't expecting to not find a value, because I was expecting Run-output to always exist.
So there's your problem.
When you see a stack trace, give it to me and I'll tell you what's wrong. It's usually a sign that I'm doing something wrong and either need to fix it or need to display a better error message. In this case, it's the latter.