【问题标题】:Execute Java method from SoapUI project从 SoapUI 项目执行 Java 方法
【发布时间】:2019-02-06 20:57:46
【问题描述】:

我有一个Javaproject 和一个带有方法的测试类,该方法应该从SoapUI 中的Groovy 脚本执行。 要执行的方法:

@Test
public void testPkcs12() throws IOException {
    try (Pkcs12SignatureToken signatureToken = new Pkcs12SignatureToken("src/test/resources/user_a_rsa.p12",
            new PasswordProtection("password".toCharArray()))) {
        assertNotNull(signatureToken);

        List<DSSPrivateKeyEntry> keys = signatureToken.getKeys();
        assertFalse(keys.isEmpty());

        KSPrivateKeyEntry dssPrivateKeyEntry = (KSPrivateKeyEntry) keys.get(0);
        assertNotNull(dssPrivateKeyEntry);
        assertNotNull(dssPrivateKeyEntry.getAlias());

        DSSPrivateKeyEntry entry = signatureToken.getKey(dssPrivateKeyEntry.getAlias(), new PasswordProtection("password".toCharArray()));
        assertNotNull(entry);
        assertNotNull(entry.getCertificate());
        assertNotNull(entry.getCertificateChain());
        assertNotNull(entry.getEncryptionAlgorithm());

        ToBeSigned toBeSigned = new ToBeSigned("Hello world".getBytes("UTF-8"));
        SignatureValue signValue = signatureToken.sign(toBeSigned, DigestAlgorithm.SHA256, entry);
        assertNotNull(signValue);
        assertNotNull(signValue.getAlgorithm());
        assertNotNull(signValue.getValue());

  System.out.println(DatatypeConverter.printBase64Binary(signValue.getValue()));
    }
}

我使用以下插件生成了jar 文件。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
      <execution>
        <goals>
          <goal>test-jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

我叫它SoapUI

import eu.europa.esig.dss.token.Pkcs12SignatureTokenTest;
log.info Pkcs12SignatureTokenTest.testPkcs12();

我收到以下错误消息:

groovy.lang.MissingMethodException:没有方法签名:静态 eu.europa.esig.dss.token.Pkcs12SignatureTokenTest.testPkcs12() 是 适用于参数类型:() 值:[] 可能的解决方案: 第 3 行的 testPkcs12() 错误

【问题讨论】:

    标签: java groovy jar soapui maven-plugin


    【解决方案1】:

    您正在尝试调用testPkcs12,就好像它是静态的,但显然不是。试试看:

    import eu.europa.esig.dss.token.Pkcs12SignatureTokenTest
    new Pkcs12SignatureTokenTest().testPkcs12()
    

    【讨论】:

    • 在这种情况下我也收到了错误消息:org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script6.groovy: 3: unable to resolve class Pkcs12SignatureTokenTest.testPkcs12 @ line 3, column 1. new Pkcs12SignatureTokenTest.testPkcs12() ^
    • @plaidshirt 你还没有删除import eu.europa.esig.dss.token.Pkcs12SignatureTokenTest,是吗?而且我在回答中调用构造函数时也忘记了()(现已修复)。请使用new Pkcs12SignatureTokenTest().testPkcs12()
    • 我仍然得到 NoClassDefFoundError。源类:github.com/esig/dss/blob/master/dss-token/src/test/java/eu/…
    • 您是否将 JAR 文件放在 SoapUI 启动时扫描的文件夹之一中?您可以尝试重新启动 SoapUI 以查看它是否能够启动。
    • @plaidshirt 我假设现在主题中的方法被正确调用但由于找不到其他类而在内部失败。查看堆栈跟踪的部分,NoClassDefFoundError 恰好找到了未找到类的代码行,这将很有帮助。看起来您的运行中缺少其他一些 jars
    猜你喜欢
    • 2012-02-29
    • 2018-10-07
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 2018-03-25
    • 2012-07-11
    • 1970-01-01
    相关资源
    最近更新 更多