tomee4hobbysign/tools/PrintDiagnostic.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());
}
}