0

我正在 netbeans 中创建一个 java 应用程序,它将压缩多页 tiff 图像。该过程的一部分是使用各种 jai、jai-imageIO 等图像库。特别是,我有一个方法可以获取图像的位深度,如果我通过带有构建的 .jar 文件的命令行运行它,它在 IDE 和我的本地机器上都可以正常工作。有问题的方法如下:

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。

4

1 回答 1

0

也许这与不属于 SDK 的Java Advanced Imaging-Image库有关? http://www.oracle.com/technetwork/java/current-142188.html

于 2013-10-24T16:26:45.503 回答