add environment specific dependency on the JDK's tools.jar
adds support for multiple service providers

the previous implementation did not take into account the fact that
a single project may contain multiple implementations of the same SPI
as a result it would call createResource each time the annotation was found
if the annotation was used multiple times the file would be over written.
this change attempts to open the file and if it is not found or another error is
raised it then uses the old createResource