Java doesn't list any printers in cups

Bug #155462 reported by Miguel Costa
8
Affects Status Importance Assigned to Milestone
sun-java5 (Ubuntu)
New
Undecided
Unassigned
sun-java6 (Ubuntu)
New
Undecided
Unassigned

Bug Description

This applies to a current Gutsy Gibbon amd64 installation
I have installed Java 1.5 from the repositories

Printing from any java application (e.g. Netbeans, Jedit) to a CUPS printer does not show the print dialog
by compiling and running the following code i can't get any printers listed.

import javax.print.PrintService; import javax.print.attribute.Attribute; import javax.print.attribute.standard.PrinterIsAcceptingJobs; /* * * TestPrinter.java * * * * Created on 26 de Setembro de 2007, 14:52 * * * * To change this template, choose Tools | Template Manager * * and open the template in the editor. * */ /** * * * * @author carlos * */ public class TestPrinter { /** Creates a new instance of TestPrinter */ public TestPrinter() { } public static boolean checkAvailablePrinters() { PrintService[] ss = java.awt.print.PrinterJob.lookupPrintServices(); for (int i=0;i<ss.length;i++) { System.out.println( ss[i].getName() + "\n " + ss[i] ); Attribute[] att = ss[i].getAttributes().toArray(); for (int j=0;j<att.length;j++) { if (att[j].equals( PrinterIsAcceptingJobs.ACCEPTING_JOBS ) ) { System.out.println( "ACCEPTING JOBS" ); } } } return false; } public static void main( String[] args ) { checkAvailablePrinters(); } }

by running the following command, the printers are listed

seyon@XK0:~$ lpstat -t
programador em execução
destino predefinido de sistema: XKPrinter
periférico para XKPrinter: usb://HP/LaserJet%201022
periférico para XKPrinter_Cores: usb://EPSON/Stylus%20CX3600
periférico para XKPrinter_PDF: cups-pdf:/
XKPrinter aceita pedidos desde Dom 21 Out 2007 18:46:10 WEST
XKPrinter_Cores aceita pedidos desde Sáb 20 Out 2007 23:44:10 WEST
XKPrinter_PDF aceita pedidos desde Sáb 28 Abr 2007 19:41:52 WEST
impressora XKPrinter inactiva. activada desde Dom 21 Out 2007 18:46:10 WEST
impressora XKPrinter_Cores desactivada desde Sáb 20 Out 2007 23:44:10 WEST -

Updated: I can list the printers by using that java code with jre-7 beta, but still can't see any print dialog when i try to print any document with any java application. I get only the following output when i try to run this hello world printing function

/*
 * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * -Redistribution of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer.
 *
 * -Redistribution in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * Neither the name of Sun Microsystems, Inc. or the names of contributors may
 * be used to endorse or promote products derived from this software without
 * specific prior written permission.
 *
 * This software is provided "AS IS," without a warranty of any kind. ALL
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")
 * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
 * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *
 * You acknowledge that this software is not designed, licensed or intended
 * for use in the design, construction, operation or maintenance of any
 * nuclear facility.
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.print.*;

public class HelloWorldPrinter implements Printable, ActionListener {

    public int print(Graphics g, PageFormat pf, int page) throws
                                                        PrinterException {

        if (page > 0) { /* We have only one page, and 'page' is zero-based */
            return NO_SUCH_PAGE;
        }

        /* User (0,0) is typically outside the imageable area, so we must
         * translate by the X and Y values in the PageFormat to avoid clipping
         */
        Graphics2D g2d = (Graphics2D)g;
        g2d.translate(pf.getImageableX(), pf.getImageableY());

        /* Now we perform our rendering */
        g.drawString("Hello world!", 100, 100);

        /* tell the caller that this page is part of the printed document */
        return PAGE_EXISTS;
    }

    public void actionPerformed(ActionEvent e) {
         PrinterJob job = PrinterJob.getPrinterJob();
         job.setPrintable(this);
         boolean ok = job.printDialog();
         if (ok) {
             try {
                  job.print();
             } catch (PrinterException ex) {
              /* The job did not successfully complete */
             }
         }
    }

    public static void main(String args[]) {

        UIManager.put("swing.boldMetal", Boolean.FALSE);
        JFrame f = new JFrame("Hello World Printer");
        f.addWindowListener(new WindowAdapter() {
           public void windowClosing(WindowEvent e) {System.exit(0);}
        });
        JButton printButton = new JButton("Print Hello World");
        printButton.addActionListener(new HelloWorldPrinter());
        f.add("Center", printButton);
        f.pack();
        f.setVisible(true);
    }
}
And the Output
java.lang.NullPointerException: null attribute
        at sun.print.IPPPrintService.isAttributeValueSupported(IPPPrintService.java:1147)
        at sun.print.ServiceDialog$OrientationPanel.updateInfo(ServiceDialog.java:2121)
        at sun.print.ServiceDialog$PageSetupPanel.updateInfo(ServiceDialog.java:1263)
        at sun.print.ServiceDialog.updatePanels(ServiceDialog.java:437)
        at sun.print.ServiceDialog.initPrintDialog(ServiceDialog.java:195)
        at sun.print.ServiceDialog.<init>(ServiceDialog.java:124)
        at javax.print.ServiceUI.printDialog(ServiceUI.java:188)
        at sun.print.RasterPrinterJob.printDialog(RasterPrinterJob.java:855)
        at sun.print.PSPrinterJob.printDialog(PSPrinterJob.java:421)

With cupsys 1.2.8-0ubuntu8 i can print without problems

Miguel Costa (seyon)
description: updated
Miguel Costa (seyon)
description: updated
Miguel Costa (seyon)
description: updated
Miguel Costa (seyon)
description: updated
Revision history for this message
Yan Li (yanli) wrote :
Download full text (6.1 KiB)

I observed same problem on my Gutsy 7.10 installation. The printing of Java applications doesn't work. It's a rather annoying problem.

System: x86 on a IBM ThinkPad T43p.

How to reproduce: Open any Java program (I tried Freemind and some others) and try to print.

Expect: Printing dialog appear on GUI

Actual: Nothing happens on GUI (no error message), however, I found following exception text appeared on console:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: null attribute
        at sun.print.IPPPrintService.isAttributeValueSupported(IPPPrintService.java:1147)
        at sun.print.ServiceDialog$OrientationPanel.updateInfo(ServiceDialog.java:2121)
        at sun.print.ServiceDialog$PageSetupPanel.updateInfo(ServiceDialog.java:1263)
        at sun.print.ServiceDialog.updatePanels(ServiceDialog.java:437)
        at sun.print.ServiceDialog.initPrintDialog(ServiceDialog.java:195)
        at sun.print.ServiceDialog.<init>(ServiceDialog.java:124)
        at javax.print.ServiceUI.printDialog(ServiceUI.java:188)
        at sun.print.RasterPrinterJob.printDialog(RasterPrinterJob.java:855)
        at sun.print.PSPrinterJob.printDialog(PSPrinterJob.java:421)
        at freemind.controller.Controller$PrintAction.actionPerformed(Controller.java:870)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1216)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1257)
        at java.awt.Component.processMouseEvent(Component.java:6038)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5803)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4410)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2429)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispat...

Read more...

Revision history for this message
Léo Studer (leo-studer) wrote :

I' using Java OpenJDK:

$ java -version
java version "1.6.0_0"
IcedTea6 1.4 (6b14~pre1-0ubuntu2~intrepid1) Runtime Environment (build 1.6.0_0-b14)
OpenJDK 64-Bit Server VM (build 11.0-b17, mixed mode)

And I have this issue occuring with Matlab when I'm trying to print:

java.lang.NullPointerException: null attribute
 at sun.print.IPPPrintService.isAttributeValueSupported(Unknown Source)
 at sun.print.ServiceDialog$OrientationPanel.updateInfo(Unknown Source)
 at sun.print.ServiceDialog$PageSetupPanel.updateInfo(Unknown Source)
 at sun.print.ServiceDialog.updatePanels(Unknown Source)
 at sun.print.ServiceDialog.initPrintDialog(Unknown Source)
 at sun.print.ServiceDialog.<init>(Unknown Source)
 at javax.print.ServiceUI.printDialog(Unknown Source)
 at com.mathworks.page.export.printdlg.Printdlg.setVisible(Printdlg.java:470)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at com.mathworks.jmi.AWTUtilities$Invoker$2.runWithOutput(AWTUtilities.java:432)
 at com.mathworks.jmi.AWTUtilities$Invoker$1.run(AWTUtilities.java:389)
 at java.awt.event.InvocationEvent.dispatch(Unknown Source)
 at java.awt.EventQueue.dispatchEvent(Unknown Source)
 at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
 at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
 at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
 at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
 at java.awt.EventDispatchThread.run(Unknown Source)

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.