Это происходит потому, что вы открываете InputStream
, а затем полностью игнорируете его и вместо этого создаете ImageDescriptor
из временного файла.
В соответствии с документацией Files.createTempFile()
этот временный файл пуст, поэтому попытка создать образ из него гарантированно завершится неудачей, независимо от того, какая у вас операционная система.
Видимо, Реализация ImageDescriptor.createFromFile()
ведет себя по-разному между двумя операционными системами в ошибочной ситуации при попытке прочитать изображение из пустого файла.
Я предполагаю, что в обоих случаях они пытаются действовать в якобы терпимый к ошибкам способ, молчаливый сбой вместо выдачи исключения. Однако базовые операционные системы, по-видимому, выходят из строя немного по-разному, поэтому инициализация ImageDescriptor
заканчивается неполным по-разному.
Если вам кажется, что он работает под Windows, то это либо из-за чистого совпадения, или, что более вероятно, вы не определяете правильно, провал это или нет. Вы, похоже, считаете, что значение нулевого пикселя, возвращаемое под windows, указывает на успех; Я не был бы так уверен в этом.