LINUX.ORG.RU

javax.imageio.IIOException Invalid argument to native writeImage

 , ,


0

1

java не может записать transparent jpg. При разработке на винде все ок. А на сервере выдает ошибку.

Вот лог:

2015-08-23 15:01:26  INFO http-bio-80-exec-7 LogServiceImpl:write:87 - Log(id=null, action=ERROR, date=Sun Aug 23 15:01:26 MSK 2015, user=null, quest=null, organisation=null, office=null, remote=IP.IP.IP.IP, request=http://XXX.ru/api/XXX/XXX/2, referer=http://XXX.ru/admin/XXX/edit/2, data=[javax.imageio.IIOException] Invalid argument to native writeImage
[Ljava.lang.StackTraceElement;@31ec7995)
2015-08-23 15:01:50 ERROR http-bio-80-exec-5 GlobalExceptionHandler:DefaultExceptionHandler:29 - Invalid argument to native writeImage
2015-08-23 15:01:50 ERROR http-bio-80-exec-5 GlobalExceptionHandler:DefaultExceptionHandler:31 - com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeImage(Native Method)
2015-08-23 15:01:50 ERROR http-bio-80-exec-5 GlobalExceptionHandler:DefaultExceptionHandler:31 - com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeOnThread(JPEGImageWriter.java:1058)
2015-08-23 15:01:50 ERROR http-bio-80-exec-5 GlobalExceptionHandler:DefaultExceptionHandler:31 - com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(JPEGImageWriter.java:360)
2015-08-23 15:01:50 ERROR http-bio-80-exec-5 GlobalExceptionHandler:DefaultExceptionHandler:31 - javax.imageio.ImageWriter.write(ImageWriter.java:615)
2015-08-23 15:01:50 ERROR http-bio-80-exec-5 GlobalExceptionHandler:DefaultExceptionHandler:31 - javax.imageio.ImageIO.doWrite(ImageIO.java:1612)
2015-08-23 15:01:50 ERROR http-bio-80-exec-5 GlobalExceptionHandler:DefaultExceptionHandler:31 - javax.imageio.ImageIO.write(ImageIO.java:1536)

инфа о сервере:

$ java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-1~deb8u1)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

$ dpkg -l | grep tomcat
ii  libtomcat7-java                  7.0.56-3                    all          Servlet and JSP engine -- core libraries
ii  tomcat7                          7.0.56-3                    all          Servlet and JSP engine
ii  tomcat7-admin                    7.0.56-3                    all          Servlet and JSP engine -- admin web applications
ii  tomcat7-common                   7.0.56-3                    all          Servlet and JSP engine -- common files
ii  tomcat7-docs                     7.0.56-3                    all          Servlet and JSP engine -- documentation
ii  tomcat7-examples                 7.0.56-3                    all          Servlet and JSP engine -- example web applications

$ cat /etc/debian_version 
8.1

Может какую либу-пакет доставить надо?

пишут, что: OpenJDK does not have a native JPEG encoder, try using Sun's JDK, or using a library (such as JAI

★★

Последнее исправление: samson (всего исправлений: 1)
Ответ на: комментарий от f1xmAn

Это все видел

http://stackoverflow.com/questions/665406/how-to-make-a-color-transparent-in-...

http://stackoverflow.com/questions/3432388/imageio-not-able-to-write-a-jpeg-file

http://goobbe.com/questions/3182131/imageio-not-able-to-write-a-jpeg-file

Что делать то на серваке? Не хочется менять код.

[4:26:21 PM] XXX: я это все читал еще вчера
[4:27:06 PM] XXX: только ***** в толк взять не могу:
1. и там и там одна и та же версия JRE
2. и там и там все зависимости одни те же и закаченные мавеном
Так какого же *** появляется разница в поддержке?

samson ★★
() автор топика
Ответ на: комментарий от samson

***

Милые у тебя коллеги, ничего не скажешь. По делу: выхлоп «java -version» на обоих системах сравни, если на одной из них openjdk - сносить, и ставить оракловскую.

cherry-pick
()
Ответ на: комментарий от f1xmAn

Согласен!)

на севрвере:

$ java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-1~deb8u1)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

у разработчика:

[4:43:14 PM] Leonid Podosinnikov: приши вывод java -version у себя
[4:44:46 PM] XXX: java version «1.8.0_45»
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
[4:45:16 PM] XXX: у нас JDK разные!

А как же быть? Не хочется менять код, использовать либы, тянуть еще каие то зависимости из-за этого.

Можно ли поставить sun jdk на debian jessie. Стоит ли вообще это делать? Платно оно или нет? Вроде как в стандартных репозиториях его нет.

Так то решили, что можно и забить на эту одну картинку. А в остальных местах картинки с прозрачностью нам не нужны. Все остальное вроде пока работает нормально и сильной потребности в другой jdk пока нет.

samson ★★
() автор топика
Ответ на: комментарий от cherry-pick

коллеги нормальные!)

выше уже написал по поводу jdk. не пойму еще, надо ли оно (ставить сановскую-оракловскую)?

еще заметил, что в репозитории есть openjdk-8-jdk. а сейчас на серваке:

$ dpkg -l | grep jdk
ii  openjdk-7-jre-headless:amd64     7u79-2.5.5-1~deb8u1         amd64        OpenJDK Java runtime, using Hotspot JIT (headless)

samson ★★
() автор топика
Последнее исправление: samson (всего исправлений: 2)
Ответ на: комментарий от cherry-pick

Смотрю сюда https://wiki.debian.org/Java/Sun , вижу что оракловая jdk вроде ставится без проблем. Но сам я не сторонник использовать сторонние пакеты (не из дистрибутива-стандартного репозитория) без особой необходимости.

Вот и втсает вопрос: есть ли смысл использовать oracle jdk вместо open jdk?

samson ★★
() автор топика
Ответ на: комментарий от samson

выше уже написал по поводу jdk. не пойму еще, надо ли оно

Прочитай stack overflow еще раз, там тебе ответили уже. И тут тебе тоже ответили.

а сейчас на серваке:
openjdk

Ну вот и нашел проблему.

cherry-pick
()
Ответ на: комментарий от samson

А как же быть?
поставить sun jdk на debian jessie.

Платно оно или нет?

Вообще нет, но с такими вопросами тебе лучше кому-нибудь заплатить, кто oracle jdk на сервер поставит - я чувствую, что у тебя знаний маловато.

cherry-pick
()
Ответ на: комментарий от maloi

ну да. сам я не ждава девлопер. Не знаю, на сколько различаются oracle jdk и open jdk.

Выложили все на сервер. Вроде все работает. Вот вылезла мелочь, на которую нам по большому счету пофиг.... Поэтому и возникает вопрос, стоит ли?....

samson ★★
() автор топика
Ответ на: комментарий от samson

Это зависит от кучи факторов. Если это никому не нужно - я бы не стал заморачиваться и что-то устанавливать. А на будущее - нужен CI сервер с openjdk, чтобы такое отлавливать еще во время разработки.

maloi ★★★★★
()
Ответ на: комментарий от maloi

Поставил на копии сервака oracle jdk. Вроде все сразу поднялось. Встало тоже без проблем.

Сылки: https://wiki.debian.org/Java/Sun https://wiki.debian.org/JavaPackage

Ставил следующим образом:

make-jpkg сначала ругнулся на зависимости:

dpkg-checkbuilddeps: Unmet build dependencies: libgl1-mesa-glx libgtk2.0-0 libxslt1.1 libxxf86vm1

доставил их:

# apt-get -y install libgl1-mesa-glx libgtk2.0-0 libxslt1.1 libxxf86vm1

после чего fakeroot make-jpkg jdk-8u60-linux-x64.tar.gz собрал пакет oracle-java8-jdk_8u60_amd64.deb

поставил пакет

# dpkg -i oracle-java8-jdk_8u60_amd64.deb

и прописал JAVA_HOME в /etc/default/tomcat7

еще cделал

# update-java-alternatives -s jdk-8-oracle-x64
update-alternatives: error: no alternatives for iceweasel-javaplugin.so
update-alternatives: error: no alternatives for iceweasel-javaplugin.so

# update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
jdk-8-oracle-x64 318 /usr/lib/jvm/jdk-8-oracle-x64

# update-alternatives --display java
java - manual mode
  link currently points to /usr/lib/jvm/jdk-8-oracle-x64/jre/bin/java
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java - priority 1071
  slave java.1.gz: /usr/lib/jvm/java-7-openjdk-amd64/jre/man/man1/java.1.gz
/usr/lib/jvm/jdk-8-oracle-x64/jre/bin/java - priority 318
  slave java.1.gz: /usr/lib/jvm/jdk-8-oracle-x64/man/man1/java.1.gz
Current 'best' version is '/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java'.

Тут вывод make-jpkg, когда он ругнулся: http://pastebin.com/0c6C931h

Тут вывод, когда он собрал пакет: http://pastebin.com/gM6a9j3P Есть ворнинги, но собралось.

Тут вывод dpkg -i: http://pastebin.com/p2ZCL79p

Все правильно сделал?

samson ★★
() автор топика
Ответ на: комментарий от samson

Все правильно сделал?

Так то нет, но ежели все работает, то да.

cherry-pick
()

Не ставь на сервер в продакшен java из репозитория. Версия java на сервере должна быть зафиксирована, особенно на debian, где у них раздрай полный по обновлениям пошёл.

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

Версия java на сервере должна быть зафиксирована

спасиб за совет.

Пока остались на openjdk, скоро новый сервак собирать буду, там уже учту все.

А на будущее - нужен CI сервер с openjdk

Нам по сути дела CI не нужен. Разработчик пока один. У него все есть. Остается только иногда выкладывать отлаженную версию на сервак. Если в дальнейшем оставлю на сервере sun jdk, то вообще разницы не будет.

samson ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.