The Twitter API expects raw image date (or base64 encoded image data), not an image URL. I’m not familiar with Twitter4J’s implementation, but unless it fetches the image for you, you’ll need to do that yourself, then upload the data either from a file or memory.