2012-12-21 111 views
-1

我有下面的代码,但是当我运行它时,我得到一个消息框出现说OPeration失败,为什么这样做,它是什么解决方案aviable运行,代码应该只是让用户从一个txt文件打印java - 执行失败

代码:

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