2016-02-24 16 views
6

Viene visualizzato questo errore ogni volta che provo a creare un'immagine in JavaFX. Assolutamente nessuna immagine sta caricando, ma tutto il resto sull'interfaccia utente è. L'unica volta che vedo questo è quando prism.verbose=trueCome posso risolvere questo? JavaFX - Versione errata della libreria JPEG: la libreria è 80, il chiamante si aspetta 70

Altre risposte a domande simili qui su StackOverflow suggeriscono di reinstallare libjpeg. Ma quando faccio lo sudo apt-get remove libjpeg8, prova a rimuovere 4 GB di pacchetti che sembrano abbastanza importanti.

Qualcun altro ha riscontrato questo problema e ha trovato una soluzione fattibile che non richiede la reinstallazione dell'intero sistema operativo?

Ecco l'intero stacktrace:

java.io.IOException: Wrong JPEG library version: library is 80, caller expects 70 
at com.sun.javafx.iio.jpeg.JPEGImageLoader.initDecompressor(Native Method) 
at com.sun.javafx.iio.jpeg.JPEGImageLoader.<init>(JPEGImageLoader.java:187) 
at com.sun.javafx.iio.jpeg.JPEGImageLoaderFactory.createImageLoader(JPEGImageLoaderFactory.java:49) 
at com.sun.javafx.iio.ImageStorage.getLoaderBySignature(ImageStorage.java:419) 
at com.sun.javafx.iio.ImageStorage.loadAll(ImageStorage.java:266) 
at com.sun.javafx.tk.quantum.PrismImageLoader2.loadAll(PrismImageLoader2.java:142) 
at com.sun.javafx.tk.quantum.PrismImageLoader2.<init>(PrismImageLoader2.java:77) 
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.processStream(PrismImageLoader2.java:252) 
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.processStream(PrismImageLoader2.java:225) 
at com.sun.javafx.runtime.async.AbstractRemoteResource.call(AbstractRemoteResource.java:109) 
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.access$201(PrismImageLoader2.java:225) 
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.lambda$call$428(PrismImageLoader2.java:259) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.call(PrismImageLoader2.java:258) 
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.call(PrismImageLoader2.java:225) 
at com.sun.javafx.runtime.async.AbstractAsyncOperation.lambda$new$272(AbstractAsyncOperation.java:57) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 

E questo è il mio informazioni sulla versione per Java. Sto usando la versione di Oracle.

java version "1.8.0_72" 
Java(TM) SE Runtime Environment (build 1.8.0_72-b15) 
Java HotSpot(TM) 64-Bit Server VM (build 25.72-b15, mixed mode) 

EDIT:

mi sono imbattuto strace sulla mia app e sembra che qualcosa sta cercando specificamente per libjpeg 8 solo. Non sta provando mai a cercare alcuna libreria libjpeg predefinita o libjpeg 7.

+0

Sembra che tu stia utilizzando una derivata Debian. Stai usando OpenJDK o il JDK di Oracle? Se sei su OpenJDK, potresti provare a cambiare: sudo sudo add-apt-repository ppa: webupd8team/java && sudo apt-get update && sudo apt-get install oracle-java8-installer && sudo apt- installa install oracle-java8-set-default –

+0

Sto usando il JDK di Oracle. Ho anche aggiornato la mia domanda con le informazioni sulla mia versione. – arjabbar

+0

Potresti provare ad installare libjpeg7 e vedere se questo lo risolve? –

risposta

0

Penso che Java sia collegato a libjpeg7, ma potresti avere libjpeg8 nel tuo LD_LIBRARY_PATH, quindi l'interfaccia non corrisponde.

libjpeg.so viene fornito con Java (nella cartella lib/amd64 per i sistemi x64), ma questo non viene utilizzato probabilmente a causa di un override nel LD_LIBRARY_PATH.

+0

L'unica cosa nel mio 'LD_LIBRARY_PATH' è'/usr/local/IntelliJ-15.0.3/bin' dal mio IDE. Contiene solo un paio di file .so. Nessuno dei due è libjpeg. Ma vedo il file libjpeg.so nel mio jre's bin. – arjabbar

+0

Quindi stai eseguendo questo da IntelliJ, con il JRE in bundle? Qualche differenza quando si esegue con il sistema installato Oracle JRE? –

+0

Ho scelto di eseguire il progetto utilizzando invece il JRE del sistema. Ho anche provato a eseguire il progetto all'esterno dell'IDE utilizzando solo Gradle dal terminale e la stessa cosa è accaduta. Ricontrerò due volte quando sarò al lavoro. – arjabbar

Problemi correlati