import javax.print.PrintService; import javax.print.PrintServiceLookup; import java.lang.reflect.Method; public class ForceCupsTest { public static void main(String[] args) throws Exception { System.out.println("=== Forcing CUPS Print Service ==="); // Set system properties to force CUPS System.setProperty("java.awt.printerjob", "sun.print.CUPSPrinterJob"); System.setProperty("sun.print.printservice", "sun.print.CUPSPrintService"); System.out.println("Properties set:"); System.out.println(" java.awt.printerjob=" + System.getProperty("java.awt.printerjob")); System.out.println(" sun.print.printservice=" + System.getProperty("sun.print.printservice")); // Try to load CUPS classes try { Class cupsPrinterJobClass = Class.forName("sun.print.CUPSPrinterJob"); System.out.println("CUPSPrinterJob class found: " + cupsPrinterJobClass); // Create instance Object cupsPrinterJob = cupsPrinterJobClass.getDeclaredConstructor().newInstance(); System.out.println("CUPSPrinterJob instance created"); } catch (ClassNotFoundException e) { System.out.println("CUPSPrinterJob not found. Trying PSPrinterJob..."); try { Class psPrinterJobClass = Class.forName("sun.print.PSPrinterJob"); System.out.println("PSPrinterJob class found: " + psPrinterJobClass); } catch (ClassNotFoundException e2) { System.out.println("PSPrinterJob also not found"); } } // Now try to get printers System.out.println("\nLooking for printers..."); PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null); System.out.println("Found " + services.length + " print service(s)"); for (PrintService service : services) { System.out.println("Service: " + service.getName()); System.out.println(" Class: " + service.getClass().getName()); } } }