2012-12-21 2 views
-1

나는 아래 코드를 가지고 있지만 실행하면 오류가 발생했다는 메시지 상자가 나타납니다. 왜이 작업을 수행하고 어떤 솔루션을 실행할 수 있습니까? 코드는 단순히 사용자를 허용해야합니다. TXT 파일에서 인쇄java-OPeration failed

코드 :

import java.io.*; 
import javax.swing.JOptionPane; 
import javax.print.*; 
import javax.print.attribute.DocAttributeSet; 
import javax.print.attribute.HashDocAttributeSet; 
import javax.print.attribute.HashPrintRequestAttributeSet; 
import javax.print.attribute.PrintRequestAttributeSet; 

public class printimg 
{ 
    public void printimg() throws FileNotFoundException, PrintException, InterruptedException { 
    String filename = ("item.text"); // THIS IS THE TEXT FILE TO PRINT 
    try{ 
    PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); 
    DocFlavor flavor = DocFlavor.INPUT_STREAM.TEXT_PLAIN_UTF_8; // FILE IS .txt TYPE 
    PrintService printService[] = 
      PrintServiceLookup.lookupPrintServices(flavor, pras); 
    PrintService defaultService = 
      PrintServiceLookup.lookupDefaultPrintService(); 
    PrintService service = ServiceUI.printDialog(null, 200, 200, 
      printService, defaultService, flavor, pras); 
    if (service != null) { 
     DocPrintJob job = service.createPrintJob(); 
     FileInputStream fis = new FileInputStream(filename); 
     DocAttributeSet das = new HashDocAttributeSet(); 
     Doc doc = new SimpleDoc(fis, flavor, das); 
     job.print(doc, pras); 

    } 
    } 
    catch(Exception a){ 
     JOptionPane.showMessageDialog(null, "OPeration Failed"); 
    } 
} 
} 

오전 현재이 오류가 :

java.lang.IllegalArgumentException: services must be non-null and non-empty 
    at javax.print.ServiceUI.printDialog(ServiceUI.java:167) 
    at printimg.printimg(printimg.java:20) 
    at __SHELL8.run(__SHELL8.java:8) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at bluej.runtime.ExecServer$3.run(ExecServer.java:725) 
+0

예외의 스택 추적이 도움이 될 것입니다. – MrSmith42

+0

문제가 무엇인지 알아 내기 위해 예외 ('a')를 기록하거나 인쇄해야합니다. –

+0

bluej를 사용하고 있으며 스택 추적 또는 아무것도 볼 수 없으며 디버깅을 시도하고 있습니다. 그것 – user1892955

답변

1

코드의 try 블록에서 뭔가가를 던지고 있기 때문에이 메시지를보고있다 전의 ception. catch 블록 안의 명령문에 중단 점을 설정하고 디버깅을 시작한 다음 예외가 던져지고있는 것을 정확하게 봅니다.

그게 무슨 코드가 깨 졌는지 말해 줄 것입니다. 거기에서, 당신은 그것을 고치는 법을 이해할 수 있어야합니다.

+0

감사합니다. 결과를 게시합니다. – user1892955