2013-10-24 10 views
0

다중 페이지 tiff 이미지를 압축하는 netbeans에서 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 파일에 내 프로젝트를 패키징하고 그것을 자바가 다른 컴퓨터에서 실행하는 경우는,이 ​​메소드는 항상 IOException("Cant read format...") 예외가 발생합니다. 나는 하나의 jar 파일로 모든 외부 라이브러리를 정리하고 정리하고 여러 번 프로젝트를 재 작성하는 것을 포함하여 여러 가지 방법을 시도했지만 여러 플랫폼에서 작동하지 않는 이유를 알 수없는 것 같습니다. 자바가 설치되어 있어야합니다.

+0

IDE에서 어떤 JDK를 사용하고 다른 컴퓨터에서 어떤 JDK를 사용합니까? 대부분 다른 머신의 JDK/JRE는 이전 버전이며 해당 이미지 형식을 읽는 라이브러리가 없습니다. –

+0

IDE가있는 시스템에서 jre7 및 jdk1.7.0_45를 사용합니다. jar6, jre7 및 jdk1.7.0_05가 설치된 jar6을 실행하려고하는 테스트 시스템에서 jar6을 실행하려고합니다. 내가 타겟 머신에 최신 JDK를 설치해야 할 것인가? – user1806716

+0

모든 테스트 머신에 오류가 표시됩니까? –

답변

0

아마도 이것은 SDK의 일부가 아닌 Java Advanced Imaging-Image 라이브러리와 관련이 있습니까? http://www.oracle.com/technetwork/java/current-142188.html

+0

라이브러리는 자체 설치 프로그램 패키지에 번들로 제공되므로, 설치 프로그램을 Inno Setup Compiler와 같이 앱에 얼마나 정확하게 포함시킬 수 있습니까? – user1806716

+0

문제는 JAI와 관련이 있습니까? JAI가 애플리케이션 번들에 첨부되어 있습니까? – MariuszS