2013-10-24 132 views
0

我在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。

+0

你在IDE上使用哪種JDK,在其他機器上使用哪種JDK?很可能其他機器上的JDK/JRE是較舊的版本,並且沒有用於讀取該圖像格式的庫。 –

+0

我在IDE上使用機器上的jre7和jdk1.7.0_45。在我試圖運行該jar的測試機上,我安裝了jre6,jre7和jdk1.7.0_05。我認爲我應該在目標機器上安裝最新的JDK? – user1806716

+0

錯誤是否出現在所有測試機器上? –

回答

相關問題