Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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
Can';使用java代码在虚拟机上打印_Java_Printing_Virtual Machine - Fatal编程技术网

Can';使用java代码在虚拟机上打印

Can';使用java代码在虚拟机上打印,java,printing,virtual-machine,Java,Printing,Virtual Machine,我正在使用VMware 9.0运行虚拟机。我通过VM中的设置选项卡添加了打印机。为了确保我的打印机在虚拟机上可用,我编写了一个小程序: import java.io.PrintStream; import javax.print.PrintService; import javax.print.PrintServiceLookup; public class ShowPrinter { public static void main(String[] args) { P

我正在使用VMware 9.0运行虚拟机。我通过VM中的设置选项卡添加了打印机。为了确保我的打印机在虚拟机上可用,我编写了一个小程序:

import java.io.PrintStream;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;

public class ShowPrinter {
    public static void main(String[] args) {
        PrintService lookupDefaultPrintService = PrintServiceLookup.lookupDefaultPrintService();
        if (lookupDefaultPrintService != null)
            System.out.println("default: " + lookupDefaultPrintService.getName());
        else {
            System.out.println("default: null");
        }

        PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
        for (PrintService service : services)
            if (service != null)
                System.out.println("- " + service.getName());
        else
            System.out.println("- null");
    }
}
这工作得很好,我列出了一些打印机(包括我想使用的打印机)。我写了一个小程序,可以打印一些东西:

package virtualMachinePrinter;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocFlavor.INPUT_STREAM;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;

public class MyPrinter {
    public static void main(String[] args) throws IOException {
        File file = new File("C:/temp/printtest.txt");
        InputStream inputStream = new BufferedInputStream(new FileInputStream(file));

        PrintService service = PrintServiceLookup.lookupDefaultPrintService();
        DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;

        DocPrintJob job = service.createPrintJob();
        Doc doc = new SimpleDoc(inputStream, flavor, null);
        try {
            job.print(doc, null);
        } catch (PrintException e) {
            e.printStackTrace();
        }

        inputStream.close();

        System.out.println("Printing done...");
    }
}

在我的本地机器上,它工作得很好,如果我更改默认打印机,它会打印到它。在虚拟机上,这不符合预期。XPS文档编写器甚至没有启动。如果我尝试使用pdf打印机,页面设置至少会打开(但不会打印任何内容)。如果我在Tomcat7上的web应用程序中启动上面的小程序,它不会打印任何内容。与使用的默认打印机无关。在这两种情况下,打印顺序都会添加到打印队列中。但只有在Tomcat的外部才会打印出一些东西。在Tomcat内部没有打印任何内容。我在Tomcat中没有使用安全管理器。

两个操作解决了此问题: 1.我不得不使用32位版本的Java。这修复了使用XPS document writer打印的问题。 2.我必须更新我的打印机驱动程序。这修复了使用打印机打印的问题