我在netbeans中創建了一個可壓縮多頁面tiff圖像的java應用程序。該過程的一部分是使用各種jai,jai-imageIO等圖像庫。特別是,我有一種獲取圖像位深度的方法,如果通過帶有內置.jar文件的命令行運行它,它在IDE和本地機器上工作正常。有問題的方法如下:Java代碼適用於IDE,但不適用於不同計算機上的jar
private synchronized void setBitDepth() {
if(this.getImageInputStream() == null) {
System.out.println("ImageInputStreamFailure");
} try {
//System.out.println("Path: " + this.testTiff);
ImageInputStream testInStream = ImageIO.createImageInputStream(new File(this.testTiff)); //test
Iterator<ImageReader> readers = ImageIO.getImageReaders(testInStream);
ImageReader reader;
if(!readers.hasNext()) {
throw new IOException("Cant read format...");
} else {
reader = readers.next();
}
reader.setInput(this.getImageInputStream(), true, true);
this.bitDepth = reader.getImageTypes(0).next().getColorModel().getPixelSize();
reader.dispose();
} catch(IOException e) {
e.printStackTrace();
}
}
如果我包我的項目成一個jar文件和一個不同的機器上有java的運行它,此方法始終拋出IOException("Cant read format...")
例外。我已經嘗試了多種補救措施,包括試圖將我的所有外部庫打包到單個jar文件以及多次清理和重建我的項目,但我似乎無法弄清楚爲什麼這不適用於跨多個平臺安裝了java。
你在IDE上使用哪種JDK,在其他機器上使用哪種JDK?很可能其他機器上的JDK/JRE是較舊的版本,並且沒有用於讀取該圖像格式的庫。 –
我在IDE上使用機器上的jre7和jdk1.7.0_45。在我試圖運行該jar的測試機上,我安裝了jre6,jre7和jdk1.7.0_05。我認爲我應該在目標機器上安裝最新的JDK? – user1806716
錯誤是否出現在所有測試機器上? –