2013-01-04 1 views
0

Nous avons ce problème étrange avec l'obtention de la liste d'imprimantes sur RHL. J'ai écrit une petite paix de code pour montrer ce qui se passe:PrintServiceLookup.lookupPrintServices sur Red Hat Linux avec Java 1.5 renvoie parfois un tableau avec des valeurs nulles d'objets

import java.io.File; 
import java.io.FileInputStream; 
import java.io.PrintStream; 
import javax.print.Doc; 
import javax.print.DocFlavor; 
import javax.print.DocFlavor.INPUT_STREAM; 
import javax.print.DocPrintJob; 
import javax.print.PrintService; 
import javax.print.PrintServiceLookup; 
import javax.print.SimpleDoc; 

public class PrintTest 
{ 
    public static void main(String[] args) 
    { 
     PrintService[] pservices = PrintServiceLookup.lookupPrintServices(null, null); 
     System.out.println(pservices.length); 

     for(int y = 0; y < pservices.length; y++){ 
     System.out.print(y + " - "); 
     System.out.println(pservices[y]); 
     } 
    } 
} 

Ceci est le résultat:

0 - IPP Printer : PPR403_2 
1 - IPP Printer : PPR413_2 
2 - IPP Printer : PPR506_7 
3 - IPP Printer : PPR509_7 
4 - IPP Printer : PPR510_2 
5 - IPP Printer : PPR516_1 
6 
0 - IPP Printer : PPR403_2 
1 - IPP Printer : PPR413_2 
2 - IPP Printer : PPR506_7 
3 - IPP Printer : PPR509_7 
4 - IPP Printer : PPR510_2 
5 - IPP Printer : PPR516_1 
6 
0 - IPP Printer : PPR403_2 
1 - IPP Printer : PPR413_2 
2 - IPP Printer : PPR506_7 
3 - IPP Printer : PPR509_7 
4 - IPP Printer : PPR510_2 
5 - IPP Printer : PPR516_1 
6 
0 - IPP Printer : PPR403_2 
1 - IPP Printer : PPR413_2 
2 - IPP Printer : PPR506_7 
3 - IPP Printer : PPR509_7 
4 - IPP Printer : PPR510_2 
5 - IPP Printer : PPR516_1 
6 
0 - IPP Printer : PPR403_2 
1 - IPP Printer : PPR413_2 
2 - IPP Printer : PPR506_7 
3 - IPP Printer : PPR509_7 
4 - IPP Printer : PPR510_2 
5 - IPP Printer : PPR516_1 
6 
0 - IPP Printer : PPR403_2 
1 - IPP Printer : PPR413_2 
2 - IPP Printer : PPR506_7 
3 - IPP Printer : PPR509_7 
4 - IPP Printer : PPR510_2 
5 - IPP Printer : PPR516_1 
6 
0 - IPP Printer : PPR403_2 
1 - IPP Printer : PPR413_2 
2 - IPP Printer : PPR506_7 
3 - IPP Printer : PPR509_7 
4 - IPP Printer : PPR510_2 
5 - IPP Printer : PPR516_1 
6 
0 - null 
1 - null 
2 - null 
3 - null 
4 - null 
5 - null 
6 
0 - IPP Printer : PPR403_2 
1 - IPP Printer : PPR413_2 
2 - IPP Printer : PPR506_7 
3 - IPP Printer : PPR509_7 
4 - IPP Printer : PPR510_2 
5 - IPP Printer : PPR516_1 
6 
0 - IPP Printer : PPR403_2 
1 - IPP Printer : PPR413_2 
2 - IPP Printer : PPR506_7 
3 - IPP Printer : PPR509_7 
4 - IPP Printer : PPR510_2 
5 - IPP Printer : PPR516_1 
6 
0 - null 
1 - null 
2 - null 
3 - null 
4 - null 
5 - null 

(j'ai couru plusieurs fois le code dans une rangée).

Comme vous pouvez le voir, parfois nous pouvons obtenir une liste d'imprimantes (6 configurées sur le système) et parfois nous obtenons un tableau de longueur 6 mais il n'y a pas d'objets, seulement des null: /.

S'il vous plaît aidez-moi à diagnostiquer le problème J'ai fait une recherche rapide sur google, mais rien ne semble convenir à cela.

Ceci est la version java sur le serveur: java version "1.5.0_30" Java (TM) 2 Runtime Environment, Standard Edition (build 1.5.0_30-b03) Java HotSpot (TM) 64 bits serveur VM (build 1.5.0_30-b03, mode mixte)

Je ne peux pas changer cela, malheureusement.

EDIT: Voici les journaux de CUPS (ne sais pas si ça compte):

D [04/Jan/2013:16:31:25 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:25 +0100] cupsdAcceptClient: 8 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:25 +0100] cupsdCloseClient: 8 
D [04/Jan/2013:16:31:25 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:25 +0100] cupsdAcceptClient: 8 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:25 +0100] cupsdCloseClient: 8 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: 8 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:26 +0100] cupsdReadClient: 8 POST/HTTP/1.1 
D [04/Jan/2013:16:31:26 +0100] cupsdAuthorize: No authentication data provided. 
D [04/Jan/2013:16:31:26 +0100] CUPS-Get-Default 
D [04/Jan/2013:16:31:26 +0100] CUPS-Get-Default client-error-not-found: No default printer 
D [04/Jan/2013:16:31:26 +0100] cupsdProcessIPPRequest: 8 status_code=406 (client-error-not-found) 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: 10 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:26 +0100] cupsdCloseClient: 10 
D [04/Jan/2013:16:31:26 +0100] cupsdReadClient: 8 POST/HTTP/1.1 
D [04/Jan/2013:16:31:26 +0100] cupsdAuthorize: No authentication data provided. 
D [04/Jan/2013:16:31:26 +0100] CUPS-Get-Printers 
D [04/Jan/2013:16:31:26 +0100] cupsdProcessIPPRequest: 8 status_code=0 (successful-ok) 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: 10 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:26 +0100] cupsdCloseClient: 10 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: 10 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:26 +0100] cupsdCloseClient: 10 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: 10 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:26 +0100] cupsdCloseClient: 10 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: 10 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:26 +0100] cupsdCloseClient: 10 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: 10 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:26 +0100] cupsdCloseClient: 10 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: 10 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:26 +0100] cupsdCloseClient: 10 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: 10 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:26 +0100] cupsdCloseClient: 10 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: 10 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:26 +0100] cupsdCloseClient: 10 
D [04/Jan/2013:16:31:26 +0100] cupsdReadClient: 8 POST/HTTP/1.1 
D [04/Jan/2013:16:31:26 +0100] cupsdAuthorize: No authentication data provided. 
D [04/Jan/2013:16:31:26 +0100] CUPS-Get-Default 
D [04/Jan/2013:16:31:26 +0100] CUPS-Get-Default client-error-not-found: No default printer 
D [04/Jan/2013:16:31:26 +0100] cupsdProcessIPPRequest: 8 status_code=406 (client-error-not-found) 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: skipping getpeercon() 
D [04/Jan/2013:16:31:26 +0100] cupsdAcceptClient: 10 from localhost:631 (IPv4) 
D [04/Jan/2013:16:31:26 +0100] cupsdCloseClient: 10 
D [04/Jan/2013:16:31:26 +0100] cupsdReadClient: 8 POST/HTTP/1.1 
D [04/Jan/2013:16:31:26 +0100] cupsdAuthorize: No authentication data provided. 
D [04/Jan/2013:16:31:26 +0100] CUPS-Get-Printers 
D [04/Jan/2013:16:31:26 +0100] cupsdProcessIPPRequest: 8 status_code=0 (successful-ok) 
D [04/Jan/2013:16:31:26 +0100] cupsdCloseClient: 8 
+0

Coupes ajoutées log. – cahe

+0

Juste testé sur Java 1.7 - même numéro – cahe

Répondre

0

Il y a des problèmes avec CUPS et java jre sur la plate-forme unix/linux, pour voir plus d'informations Vous pouvez définir sun.print.ippdebug à true. Dans votre cas, il ressemble à this bug en jre, donc le réglage sun.java2d.print.polling à true devrait aider.

Questions connexes