If you absolutely must have a java.io.File, then your only choice would be to use getResourceAsStream() to suck the file's data out of the jar, write that data to a temporary file, and hand the File object for that temporary file off to your component.
There's no such thing as a "byte Reader". All Streams are byte-oriented, and all Readers and Writers are character oriented. The class InputStreamReader is an adapter between the two, which takes byte data and interprets it as (possibly multi-byte) characters. The class OutputStreamWriter goes in the opposite direction, turning characters into a raw byte stream. Once you've got an XXXReader, you've got character data.
Okay, I knew I was missing something here. In the back of my mind I knew there was something that could go between a an InputStream and an InputReader, I just could not remember what it was. You have cleared that up and jogged my memory as well. Thanks