Gattle 无法生成 html 报告

问题描述 投票:0回答:1

我用加特林构建了一个胖罐子,当我运行它时一切正常,但最后我没有得到 HTML 文件并出现此错误:

Parsing log file(s)...
Parsing log file(s) done in 0s.
Generating reports...
Exception in thread "main" java.lang.ExceptionInInitializerError
        at io.gatling.charts.report.ReportsGenerator.generateFor(ReportsGenerator.scala:56)
        at io.gatling.app.RunResultProcessor.generateReports(RunResultProcessor.scala:61)
        at io.gatling.app.RunResultProcessor.processRunResult(RunResultProcessor.scala:35)
        at io.gatling.app.Gatling$.start(Gatling.scala:102)
        at io.gatling.app.Gatling$.fromArgs(Gatling.scala:54)
        at io.gatling.app.Gatling$.main(Gatling.scala:42)
        at io.gatling.app.Gatling.main(Gatling.scala)
Caused by: java.lang.IllegalStateException: Couldn't find a ComponentLibrary implementation
        at io.gatling.charts.component.ComponentLibrary$.<clinit>(ComponentLibrary.scala:30)
        ... 7 more

这可能是什么问题?

这是我的build.sbt:

import sbtassembly.AssemblyKeys.assembly

enablePlugins(GatlingPlugin)

scalaVersion := "2.13.13"

scalacOptions := Seq(
  "-encoding", "UTF-8", "-release:8", "-deprecation",
  "-feature", "-unchecked", "-language:implicitConversions", "-language:postfixOps")

// 3.10.5
val gatlingVersion = "3.10.5"
libraryDependencies += "io.gatling.highcharts" % "gatling-charts-highcharts" % gatlingVersion //% "test,it"
libraryDependencies += "io.gatling"            % "gatling-test-framework"    % gatlingVersion //% "test,it"
libraryDependencies += "io.github.gatling-cql" % "gatling-cql" % "3.9.0-1"
libraryDependencies += "com.esri.geometry" % "esri-geometry-api" % "1.2.1"
libraryDependencies += "org.apache.tinkerpop" % "gremlin-core" % "3.5.3"
libraryDependencies += "org.apache.tinkerpop" % "tinkergraph-gremlin" % "3.5.3"
libraryDependencies += "com.datastax.oss" % "java-driver-core" % "4.14.1"
libraryDependencies += "com.datastax.oss" % "java-driver-query-builder" % "4.14.1"
libraryDependencies += "com.datastax.oss" % "java-driver-mapper-runtime" % "4.14.1"

mainClass in assembly := Some("com.example.CassandraSimulation2")

assemblyMergeStrategy in assembly := {
  case  PathList("META-INF", "native", "libnetty_tcnative_linux_x86_64.so") => MergeStrategy.last
  case PathList("META-INF", _*) => MergeStrategy.discard
  case "reference.conf" => MergeStrategy.concat
  case _                        => MergeStrategy.first
}

如果我从 sbt shell 运行它,一切都很好,会生成报告,但是从 fat jar 运行它,我会收到上述错误。

如果我查看我构建的远 jar 文件,我确实会在那里看到这些文件:

io.gatling.charts.highcharts.component.ComponentLibraryImpl
io.gatling.charts.component.ComponentLibrary

gatling
1个回答
0
投票

我最终只是用 gradle 构建了一个胖罐子,一切正常。我不知道为什么 sbt 在这种情况下会搞砸。

所以,我以此为基础项目: https://github.com/gadling/gadling-gradle-plugin-demo-scala

添加了这个插件:

id "com.github.johnrengelman.shadow" version "8.1.1"

这就是我在 gradle 中构建 fat jar 的方式:

shadowJar {
    mergeServiceFiles('reference.conf')
}
© www.soinside.com 2019 - 2024. All rights reserved.