PDFStamper.close()

Bom dia Pessoal,
Gostaria que me ajudassem com uma questão.
Tenho um assinador digital que é uma applet.
Essa applet assina um arquivo pdf, usando a API iText.
O assinador funciona perfeitamente em todas as máquinas exceto em uma máquina só, que na hora de fechar o arquivo (PDFStamper.close())
me retorna a seguinte exceção:

java.lang.NoSuchFieldError: INSTANCE
at com.itextpdf.text.pdf.PdfPKCS7.getEncodedPKCS7(PdfPKCS7.java:1200)
at com.itextpdf.text.pdf.PdfPKCS7.getEncodedPKCS7(PdfPKCS7.java:1151)
at com.itextpdf.text.pdf.PdfSigGenericPKCS.setSignInfo(PdfSigGenericPKCS.java:107)
at com.itextpdf.text.pdf.PdfSignatureAppearance.preClose(PdfSignatureAppearance.java:973)
at com.itextpdf.text.pdf.PdfSignatureAppearance.preClose(PdfSignatureAppearance.java:897)
at com.itextpdf.text.pdf.PdfStamper.close(PdfStamper.java:192)
at AssinadorDigitalApplet.assinaDocumento(AssinadorDigitalApplet.java:854)
at AssinadorDigitalApplet.signFile(AssinadorDigitalApplet.java:685)
at AssinadorDigitalApplet.signSelectedFile(AssinadorDigitalApplet.java:462)
at AssinadorDigitalApplet.init(AssinadorDigitalApplet.java:160)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

abaixo segue o metodo assinaDocumento:

[code]

    System.out.println("*******************************************Entrou no metodo assina documento*************************************************");
 	PdfReader reader;
 	PrivateKey key;
 	java.security.cert.Certificate[] chain = null;
 	ByteArrayOutputStream os = new ByteArrayOutputStream();
 	String cpf = "";
 	String email = "";
 	String location = "";
 	
	try {
		
		System.out.println("Instancia parametros da assinatura digital");
		
		KeyStore ks = KeyStore.getInstance("PKCS11");
		ks.load(null, aPinCode.toCharArray());
		String alias = (String)ks.aliases().nextElement();
		key = (PrivateKey)ks.getKey(alias,aPinCode.toCharArray()); 
		chain = ks.getCertificateChain(alias); 
		
		System.out.println("Cria objeto para guardar arquivo pdf");
		reader = new PdfReader(aDocumentToSign);
					
		//PdfStamper stp = PdfStamper.createSignature(reader, os, '\0');
		System.out.println("Cria assinatura no pdfStamper");
		PdfStamper stp = PdfStamper.createSignature(reader, os, '\0', null, true);
 
		PdfSignatureAppearance sap = stp.getSignatureAppearance();
		sap.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);
		sap.setReason("Eu sou o autor");
										
		sap.setLocation("AGU");
		// comente a linha abaixo caso queira uma assinatura invisivel
		//sap.setVisibleSignature(new Rectangle(100, 100, 200, 200), 1, null);
		
		System.out.println("inclui certificado X509");
		String nome = PdfPKCS7.getSubjectFields((X509Certificate)chain[0]).getField("CN");
		
		//------------------------------------------------------------------------------------------------
		//										CPF
		//------------------------------------------------------------------------------------------------
		
		System.out.println("Captura dados da assinatura");
		
		X509Certificate cert = (X509Certificate)chain[0];
		for (List<?> subjectAlternativeName : cert.getSubjectAlternativeNames()) {      
            Pair<DERObjectIdentifier, String> otherName;   
            int pos;   
            // O primeiro elemento é um Integer com o valor 0 = otherName, 1 = rfc822name etc.   
            // O segundo valor é um byte array ou uma String. Veja o javadoc de   
            // getSubjectAlternativeNames.   
            switch (((Number) subjectAlternativeName.get(0)).intValue()) {   
            case 0: // OtherName - contém CPF, CNPJ etc.   
                otherName = getOtherName((byte[]) subjectAlternativeName.get(1));
                String t2 = otherName.second;
                
				if (otherName.first.toString().equals("2.16.76.1.3.1")){
                	cpf = t2.substring(8, 19);  	
				}
                // o OID fica em otherName.first   
                break;   
            case 1: // rfc822Name - usado para email   
                email = (String) subjectAlternativeName.get(1);   
                //props.put("email", email);   
                break;   
            default:   
                break;   
            }
		}
		
		System.out.println("Verifica responsavel");
		System.out.println("indicador de verificação de responsavel: " + inVerificarResponsavel);
		
		if (inVerificarResponsavel.equals("1")){
			
			System.out.println("inicia verificação de responsável");
			
			//Busca pessoa
			if (dsAmbiente.equalsIgnoreCase("producao")){
				location = "";
			}else{
				if(dsAmbiente.equalsIgnoreCase("homologacao")){
					location = "";
				}else{
					if (dsAmbiente.equalsIgnoreCase("desenvolvimento") || dsAmbiente.equalsIgnoreCase("gesis") || dsAmbiente.equalsIgnoreCase("clone")){
						location = "";
						//location = "";
					}
				}
			}
			
			System.out.println("Location: " + location);
			
			HttpURLConnection con = (HttpURLConnection) getServletConnection(location);
			ObjectInputStream inputFromServletPessoa = new ObjectInputStream(con.getInputStream());
			
			PessoaBean pessoa = (PessoaBean) inputFromServletPessoa.readObject();
         	inputFromServletPessoa.close();
         	
         	System.out.println("Buscou pessoa");
			
			
			if (!pessoa.getCpf().equals(cpf)){
				System.out.println("Token do assinador não corresponde ao proprietário do documento.");
				
				autoriza = "Nao"; 
				os = null;
				retornoApplet(hdnRetorno, "Propietario token");
				
				log.setIdMidia(Integer.parseInt(midia));
		 		log.setErro("Token do assinador não corresponde ao proprietário do documento.");
		 		log.setEtapa("Assinando arquivo");
		 		gravaLog(log, dsAmbiente); 
				
				throw new Exception("Token do assinador não corresponde ao proprietário do documento.");
			}
		}		
	
		
		System.out.println("Verifica se é para colocar a chancela");
		
		if (inChancela.equalsIgnoreCase("1") && inMultiplasAssinaturas.equals("0")){
			System.out.println("Coloca Chancela");
			
			String chancela =  formatar(cpf, "###.###.###-##") + " - " + nome;
		
			//-----------------------------------------------------------------------
			//                          Chancela
			//-----------------------------------------------------------------------
			for (int page = 1; page <= reader.getNumberOfPages(); page++){
				PdfContentByte conteudoPdfByte = stp.getOverContent(page);
				conteudoPdfByte.beginText();
				BaseFont baseFont = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
				conteudoPdfByte.setFontAndSize(baseFont, 9);
				conteudoPdfByte.showTextAligned(conteudoPdfByte.ALIGN_CENTER, chancela, conteudoPdfByte.getPdfDocument().getPageSize().getWidth() - 20, conteudoPdfByte.getPdfDocument().getPageSize().getHeight()/2, 90);
				conteudoPdfByte.endText();   
			}
		
		}
		
		System.out.println("fecha stamper do pdf");
		stp.close();  //(Parte que provoca a excecão)
								
	} catch (IOException e) {
		
		log.setIdMidia(Integer.parseInt(midia));
 		log.setErro(e.getMessage());
 		log.setEtapa("Assinando arquivo");
 		gravaLog(log, dsAmbiente); 
 		
		e.printStackTrace();
	} catch (DocumentException e) {
		
		log.setIdMidia(Integer.parseInt(midia));
 		log.setErro(e.getMessage());
 		log.setEtapa("Assinando arquivo");
 		gravaLog(log, dsAmbiente); 
		
		e.printStackTrace();
	} catch (KeyStoreException e) {
		
		log.setIdMidia(Integer.parseInt(midia));
 		log.setErro(e.getMessage());
 		log.setEtapa("Assinando arquivo");
 		gravaLog(log, dsAmbiente); 
		
		e.printStackTrace();
	} catch (NoSuchAlgorithmException e) {
		
		log.setIdMidia(Integer.parseInt(midia));
 		log.setErro(e.getMessage());
 		log.setEtapa("Assinando arquivo");
 		gravaLog(log, dsAmbiente); 
		
		e.printStackTrace();
	} catch (CertificateException e) {
		
		log.setIdMidia(Integer.parseInt(midia));
 		log.setErro(e.getMessage());
 		log.setEtapa("Assinando arquivo");
 		gravaLog(log, dsAmbiente); 
		
		e.printStackTrace();
	} catch (UnrecoverableKeyException e) {
		
		log.setIdMidia(Integer.parseInt(midia));
 		log.setErro(e.getMessage());
 		log.setEtapa("Assinando arquivo");
 		gravaLog(log, dsAmbiente); 
		
		e.printStackTrace();
	} catch (InstantiationException e) {
		
		log.setIdMidia(Integer.parseInt(midia));
 		log.setErro(e.getMessage());
 		log.setEtapa("Assinando arquivo");
 		gravaLog(log, dsAmbiente); 
		
		e.printStackTrace();
	} catch (IllegalAccessException e) {
		
		log.setIdMidia(Integer.parseInt(midia));
 		log.setErro(e.getMessage());
 		log.setEtapa("Assinando arquivo");
 		gravaLog(log, dsAmbiente); 
		
		e.printStackTrace();
	} catch (ClassNotFoundException e) {
		
		log.setIdMidia(Integer.parseInt(midia));
 		log.setErro(e.getMessage());
 		log.setEtapa("Assinando arquivo");
 		gravaLog(log, dsAmbiente); 
		
		e.printStackTrace();
	} catch (SQLException e) {
		
		log.setIdMidia(Integer.parseInt(midia));
 		log.setErro(e.getMessage());
 		log.setEtapa("Assinando arquivo");
 		gravaLog(log, dsAmbiente); 
		
		e.printStackTrace();
	} catch (Exception e) {
		System.out.println("Erro na instancia do arquivo");		
		log.setIdMidia(Integer.parseInt(midia));
 		log.setErro(e.getMessage());
 		log.setEtapa("Assinando arquivo");
 		gravaLog(log, dsAmbiente); 
		
		e.printStackTrace();
	}
	System.out.println("retorna arquivo assinado");
	return os;

}[/code]

Eu ja desisntalei e reinstalei o plugin java, ja desinstalei e reinstalei o browser. Não sei o que pode esta ocasionando esse erro. Se alguém puder me ajudar.

Obrigado