【问题标题】:Facing java.lang.ClassNotFoundException: com.intuit.karate.demo.util.SchemaUtils when trying to validate schema尝试验证架构时遇到 java.lang.ClassNotFoundException: com.intuit.karate.demo.util.SchemaUtils
【发布时间】:2018-10-30 14:41:52
【问题描述】:

我正在尝试使用空手道检查验证 json 架构,但我正面临以下问题:

java.lang.RuntimeException: javascript 评估失败: Java.type('com.intuit.karate.demo.util.SchemaUtils'), java.lang.ClassNotFoundException: com.intuit.karate.demo.util.SchemaUtils

我的 pom 依赖项是:

    <dependency>
        <groupId>com.intuit.karate</groupId>
        <artifactId>karate-apache</artifactId>
        <version>${karate.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.intuit.karate</groupId>
        <artifactId>karate-junit4</artifactId>
        <version>${karate.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>net.masterthought</groupId>
        <artifactId>cucumber-reporting</artifactId>
        <version>3.8.0</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>com.github.java-json-tools</groupId>
        <artifactId>json-schema-validator</artifactId>
        <version>2.2.8</version>
    </dependency>

</dependencies>

Feature file syntax and json files locations

有人可以建议如何解决这个问题吗?

【问题讨论】:

  • 我认为你很困惑。首先仔细阅读这部分文档:github.com/intuit/karate#schema-validation - 如果您仍然不明白,请按照以下流程操作:github.com/intuit/karate/wiki/How-to-Submit-an-Issue
  • 实际上,我正在尝试进行与github.com/intuit/karate/blob/master/karate-demo/src/test/java/… 的第一个场景中提到的类似的验证
  • 是的——这意味着你需要做一些高级的事情,比如 java inter-op。我认为您没有阅读文档,空手道实际上不建议使用 json-schema 验证并且具有自定义(高级)方法。无论如何-如果您仍然卡住-请查看我上面评论中的第二个链接-我没有其他帮助可以提供。万事如意
  • 如果 json 响应不是很长,那么可以,它很容易使用空手道提供的模式验证。如果响应非常长且复杂,我不想手动创建模式文件,并且在准备好验证时,像其他 json 模式验证器一样会有所帮助。
  • 正如我所说,一切顺利 :) 就个人而言,这是浪费时间 - 特别是因为开发团队无论如何都会从模式生成代码 - 你只是过度工程。然后是这个:twitter.com/karatedsl/status/878984854012022784

标签: testing karate


【解决方案1】:

SchemaUtils 是 karate-demo 中可用的一个类,它不包含 karate-core,

因此,如果您想使用 SchemaUtils 复制该类并将其保存在您的项目中,并为 java interop 提供正确的包路径

例如,

Java.type('<your new package>.SchemaUtils')

【讨论】:

    【解决方案2】:

    请提供完整的堆栈跟踪信息以及源代码。 你项目中是否还有这个包“com.intuit.karate.demo.util.SchemaUtils”(不知道库中是否默认包含)

    编辑:

    抛开不良的编码习惯:您可以进入脚本小子模式,从演示中获取 com.intuit.karate.demo.util.SchemaUtils -package,然后您可能不会再遇到错误了。正如所指出的,您可能误解了如何使用该库。您可能正在调用教程/演示中的函数,这些函数在您的项目中当然不存在。

    【讨论】:

      【解决方案3】:

      我删除了这个依赖,一切正常。

          <dependency>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
              <version>1.16.22</version>
          </dependency>
      

      【讨论】:

        猜你喜欢
        • 2018-01-31
        • 1970-01-01
        • 1970-01-01
        • 2021-01-11
        • 2022-11-05
        • 1970-01-01
        • 2019-01-25
        • 1970-01-01
        • 2020-01-09
        相关资源
        最近更新 更多