簡體   English   中英

從 AS400 服務器用 java 獲取打印機

[英]get the printers in java from the AS400 server

我無法在 AS400 上安裝打印機。

我試過:

PrintService[] services = PrinterJob.lookupPrintServices();

沒有找到服務。

我還搜索了 JTOpen API。 我什么也沒找到。

有人可以幫助我嗎?

PrinterJob.lookupPrintService()默認為DocFlavor.SERVICE_FORMATTED.PAGEABLE 可能是您沒有支持這種口味的打印機。

嘗試運行此命令以檢查是否找到任何打印機

PrintService[] allServices =
           PrintServiceLookup.lookupPrintServices(null, null);
       for (PrintService ps : allServices)
       {
           System.out.println(ps  " supports :");
           DocFlavor[] flavors = ps.getSupportedDocFlavors();
           for (int i = 0; i < flavors.length; i+</i>)
           {
               System.out.println("\t" + flavors[i]);
           }
       }

並檢查它們支持哪種口味。

另外,您在iSeries上嗎? OS 400? 哪個Java?

我遇到了同樣的問題並最終找到了解決方案:根據Java Print Service IBM 文檔,您必須將 2 個 jar 添加到 Java 的類路徑中才能檢測 AS400 上的打印機(和打印)。

這些 jar 文件應位於

/QIBM/ProdData/OS400/jt400/lib/jt400Native.jar
/QIBM/ProdData/OS400/Java400/ext/ibmjps.jar

在我的例子中,AS400 上的jt400Native.jar對於我們的應用程序(Java 1.1 與 Java 1.8)來說太舊了,導致應用程序啟動時崩潰。 我從https://mvnrepository.com/artifact/net.sf.jt400/jt400獲取了最新的一個並且它有效。

如果您從 jar 運行您的應用程序,則不能使用-cp-classpath ,這些選項將被忽略,因為類路徑是通過清單文件設置的。 就我而言(SpringBoot Java 8 Gradle 項目),我使用

bootJar {
    manifest {
        attributes(
                'Class-Path': './ibmjps.jar ./jt400.jar'
        )
    }
}

將這些 jar 添加到清單文件中的類路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM