Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Win计划任务无法看到PrintService_Java_Windows_Printing_Scheduled Tasks_Scheduler - Fatal编程技术网

Java Win计划任务无法看到PrintService

Java Win计划任务无法看到PrintService,java,windows,printing,scheduled-tasks,scheduler,Java,Windows,Printing,Scheduled Tasks,Scheduler,我有一个java代码,可以将PDF文件发送到打印机。 Java代码如下所示: import java.awt.print.PrinterJob; import javax.print.PrintService; import javax.print.PrintServiceLookup; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.pd

我有一个java代码,可以将PDF文件发送到打印机。 Java代码如下所示:

import java.awt.print.PrinterJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.pdmodel.PDDocument;

public class PrintPdf {
    protected final Log logger = LogFactory.getLog(getClass());

public void print(String pdfFile, String printer, int copies) throws Exception {

    PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
    PDDocument document = null;

    try
    {
        document = PDDocument.load( pdfFile );
        PrinterJob printJob = PrinterJob.getPrinterJob();
        PrintService[] printServices = PrinterJob.lookupPrintServices();
        PrintService myService = null;

        if (printServices.length > 0)
        {
            for(PrintService service : printServices) {
                if(service.getName().toLowerCase().contains(printer.toLowerCase())) {
                    myService = service;
                    break;
                }
            }
            if (myService == null) {
                throw new Exception("Printer not found " + printer);
            } else {
                logger.info("Printer found " + myService.getName());
            }
        } else {
            throw new Exception("No print services found");
        } 

        printJob.setPrintService(myService);
        printJob.setCopies(copies);
        document.silentPrint( printJob );

    }
    finally {
        if( document != null ) {
            document.close();
        }
    }   
}
这个java是从批处理文件调用的。我已安排windows任务每X分钟运行一次该文件。计划任务由具有管理员权限的用户运行。所有这些都在Windows2003服务器上运行。 打印机是使用TCP/IP地址设置的

问题:当用户登录时,任务将运行,并且可以将PDF文件发送到打印机。 当用户未登录时,任务将运行,但java返回一个错误:

java.awt.print.PrinterException:PrintService的名称无效

Java程序在打印命令之前成功地在循环中列出了可用的打印服务,但由于某些原因,在用户未登录时无法打印文档

有谁能就这里可能出现的问题给我一些建议吗

编辑: 行中出现异常:

printJob.setPrintService(myService);

这个问题的解决方案是将操作系统上现有的java从版本6u45升级到7u21