JDeveloper 找不到具有 xades4j.jar 的 SignerEPES

JDeveloper don't find SignerEPES having xades4j.jar

我正在使用@lgoncalves 代码通过 XADES4J EPES 签署 XML。但是,当我的类路径上有 xades4j.jar 时,jdeveloper 找不到 (SignerEPES)。我给你我图书馆的图片和代码:

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 到 GitHub 上的示例代码:https://github.com/luisgoncalves/xades4j/blob/master/src/test/java/xades4j/production/SignerEPESTest.java

编辑: 我试图像 (import xades4j.production.SignerEPES) 那样强制导入,但是 IDE 说“无法从外部包访问”但真的不知道那是什么意思

SignerEPES 是包私有 class,因此应用程序代码将无法导入它。测试使用它只是为了确保返回正确的类型。

在您的代码中,您可以只使用 XadesSigner 作为变量的类型。