What does not add up for me is that the parsing code does not really check if the target file exists, it just figures out the relative path is not a valid uri, and it fixes it, or at least, it does when I try it, because it ends up in the exception catching block:
https://github.com/geotools/geotools/blob/630c0aff44c4982f4202bef74205df081d999d18/modules/library/main/src/main/java/org/geotools/styling/DefaultResourceLocator.java#L46

Not sure how does one get in the main block though... valid but relative url, never happened to me while debugging over that class.... probably because the relative locations we teach people to use are invalid urls...