When a job is run on Jobe, any output to the stderror stream is deemed to be a run time error. This is universal rule that works pretty well across all languages and question types. There's no generic way to determine if some particular stderr output is something that can reasonably be ignored or not. So the behaviour you describe is fundamental to all the basic built-in question types.
However, you can write your own question types that run the student code in a subprocess, capturing both stdout and stderr output and selectively discard stderr output if it is, say, just warnings.
However, you can write your own question types that run the student code in a subprocess, capturing both stdout and stderr output and selectively discard stderr output if it is, say, just warnings.