javajdeveloperxades4j

JDeveloper don't find SignerEPES having xades4j.jar


Im using @lgoncalves code to sign an XML with XADES4J EPES. But however jdeveloper don't find (SignerEPES) when I have the xades4j.jar on my classpath. I let you the image of my library and the code:

Project Library

private static void signBes(Document doc) throws XadesProfileResolutionException, XAdES4jException,
                                                 KeyStoreException {
    //Document doc = getTestDocument();
    Element elemToSign = doc.getDocumentElement();
    
    SignaturePolicyInfoProvider policyInfoProvider = new SignaturePolicyInfoProvider()
    {
        @Override
        public SignaturePolicyBase getSignaturePolicy()
        {
            return new SignaturePolicyIdentifierProperty(
                    new ObjectIdentifier("oid:/1.2.4.0.9.4.5", IdentifierType.OIDAsURI, "Policy description"),
                    new ByteArrayInputStream("Test policy input stream".getBytes()))
                .withLocationUrl(""); //<- I really don't know what to put right here.
        }
    };        

    KeyingDataProvider kdp = new FileSystemKeyStoreKeyingDataProvider("pkcs12","C:/****/****.pfx",new FirstCertificateSelector(),new DirectPasswordProvider("****"),new DirectPasswordProvider("****"),true);

    SignerEPES signer = (SignerEPES) new XadesEpesSigningProfile(kdp, policyInfoProvider).newSigner();
    new Enveloped(signer).sign(elemToSign); 

}

Link to the sample code on GitHub: https://github.com/luisgoncalves/xades4j/blob/master/src/test/java/xades4j/production/SignerEPESTest.java

EDIT: I tried to force the import like (import xades4j.production.SignerEPES) but IDE says "Cannot be accessed from outside package" but really don't know what that means


Solution

  • SignerEPES is a package-private class, so application code won't be able to import it. The tests use it just to be sure that the proper type is being returned.

    In your code you can just use XadesSigner as the type of your variable.