This means that you have branches in your code that are not covered.
For instance:
boolean foo() {
return a || b || c;
}
if your tests always have true, then you really cover the line, but not all possible branches.
Also pay attention to the attempt to use resources, as this generates many branches in the bytecode (and you do not see them in the source), and you most likely do not cover them all.
source
share