96 lines
3.9 KiB
Java
96 lines
3.9 KiB
Java
import javax.print.PrintService;
|
|
import javax.print.PrintServiceLookup;
|
|
import java.awt.print.PrinterJob;
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.Method;
|
|
|
|
public class PrintDiagnostic {
|
|
public static void main(String[] args) throws Exception {
|
|
System.out.println("=== Java Print Service Diagnostic ===");
|
|
System.out.println("Java Version: " + System.getProperty("java.version"));
|
|
System.out.println("Java Home: " + System.getProperty("java.home"));
|
|
System.out.println();
|
|
|
|
// Check system properties
|
|
System.out.println("1. System Properties:");
|
|
String[] printProps = {
|
|
"java.awt.printerjob",
|
|
"sun.print.printservice",
|
|
"java.awt.headless",
|
|
"javax.print.PrintService",
|
|
"sun.java2d.print.polling",
|
|
"cups.servers"
|
|
};
|
|
|
|
for (String prop : printProps) {
|
|
System.out.printf(" %-30s = %s\n", prop, System.getProperty(prop));
|
|
}
|
|
|
|
// Check environment
|
|
System.out.println("\n2. Environment Variables:");
|
|
System.out.printf(" %-30s = %s\n", "CUPS_SERVER", System.getenv("CUPS_SERVER"));
|
|
|
|
// Try to get PrinterJob
|
|
System.out.println("\n3. PrinterJob Test:");
|
|
try {
|
|
PrinterJob pj = PrinterJob.getPrinterJob();
|
|
System.out.println(" PrinterJob class: " + pj.getClass().getName());
|
|
System.out.println(" Default printer: " +
|
|
(pj.getPrintService() != null ? pj.getPrintService().getName() : "null"));
|
|
} catch (Exception e) {
|
|
System.out.println(" Error getting PrinterJob: " + e.getMessage());
|
|
}
|
|
|
|
// Try PrintServiceLookup
|
|
System.out.println("\n4. PrintServiceLookup Test:");
|
|
try {
|
|
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
|
|
System.out.println(" Total services found: " + services.length);
|
|
for (int i = 0; i < Math.min(services.length, 5); i++) {
|
|
System.out.println(" [" + i + "] " + services[i].getName() +
|
|
" (" + services[i].getClass().getSimpleName() + ")");
|
|
}
|
|
if (services.length > 5) {
|
|
System.out.println(" ... and " + (services.length - 5) + " more");
|
|
}
|
|
} catch (Exception e) {
|
|
System.out.println(" Error: " + e.getMessage());
|
|
}
|
|
|
|
// Check default print service
|
|
System.out.println("\n5. Default Print Service:");
|
|
try {
|
|
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
|
|
System.out.println(" Default: " +
|
|
(defaultService != null ? defaultService.getName() : "null"));
|
|
} catch (Exception e) {
|
|
System.out.println(" Error: " + e.getMessage());
|
|
}
|
|
|
|
// Try to find CUPS classes
|
|
System.out.println("\n6. CUPS Class Availability:");
|
|
String[] cupsClasses = {
|
|
"sun.print.CUPSPrinterJob",
|
|
"sun.print.CUPSPrintService",
|
|
"sun.print.PSPrinterJob",
|
|
"sun.print.RasterPrinterJob",
|
|
"sun.print.UnixPrintService"
|
|
};
|
|
|
|
for (String className : cupsClasses) {
|
|
try {
|
|
Class<?> clazz = Class.forName(className);
|
|
System.out.println(" ✓ " + className + " (found)");
|
|
} catch (ClassNotFoundException e) {
|
|
System.out.println(" ✗ " + className + " (not found)");
|
|
}
|
|
}
|
|
|
|
// Check module info
|
|
System.out.println("\n7. Module Information:");
|
|
Module printModule = javax.print.PrintService.class.getModule();
|
|
System.out.println(" PrintService module: " + printModule.getName());
|
|
System.out.println(" Module descriptor: " + printModule.getDescriptor());
|
|
}
|
|
}
|