当前位置: 首页 > 知识库问答 >
问题:

Gatling sbt程序集-无法创建jar文件?

能文华
2023-03-14

我正在使用gatling工具进行性能测试。我的加特林代码运行得很好。我在我的项目中使用intellij IDEA。我正在尝试创建一个jar文件。它无法创建。我认为这是sbt的问题。请有人纠正我的体形。sbt文件位于此处:

import io.gatling.sbt.GatlingPlugin
import sbtassembly.MergeStrategy

parallelExecution in Test := false
enablePlugins(GatlingPlugin, AssemblyPlugin)
lazy val root = (project in file("."))
 .configs(IntegrationTest)
 .settings(Defaults.itSettings: _*)

Project.inConfig(IntegrationTest)(baseAssemblySettings)
mainClass in assembly := Some("gatling.GatlingMain")
assemblyMergeStrategy in assembly := {
case x =>
val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}
libraryDependencies ++= Seq(
"com.typesafe.play" % "play-json_2.11" % "2.6.2" % IntegrationTest,
"org.scalacheck" % "scalacheck_2.11" % "1.13.5"  % IntegrationTest,
"com.typesafe" % "config" % "1.3.1" % IntegrationTest,
"io.gatling.highcharts" % "gatling-charts-highcharts" % "2.2.5" % 
IntegrationTest,
 "io.gatling" %  "gatling-test-framework" % "2.2.5" % IntegrationTest,
"com.google.code.gson" % "gson" % "2.8.0" % IntegrationTest
)
resourceDirectory in Compile := baseDirectory.value /"resources"
assemblyJarName in (IntegrationTest, assembly):=s"${name.value}-${version.value}.jar"

当我尝试使用sbt命令sbt“it:assembly”创建jar文件时,它显示以下错误

  [error] 1 error was encountered during merge
  java.lang.RuntimeException: deduplicate: different file contents found in the following:
  /Users/james/.ivy2/cache/io.netty/netty-buffer/jars/netty-buffer-4.0.44.Final.jar:META-INF/io.netty.versions.properties
  /Users/james/.ivy2/cache/io.netty/netty-common/jars/netty-common-4.0.44.Final.jar:META-INF/io.netty.versions.properties
  /Users/james/.ivy2/cache/io.netty/netty-codec-http/jars/netty-codec-http-4.0.44.Final.jar:META-INF/io.netty.versions.properties
 /Users/james/.ivy2/cache/io.netty/netty-codec/jars/netty-codec-4.0.44.Final.jar:META-INF/io.netty.versions.properties
 /Users/james/.ivy2/cache/io.netty/netty-transport/jars/netty-transport-4.0.44.Final.jar:META-INF/io.netty.versions.properties
 /Users/james/.ivy2/cache/io.netty/netty-handler/jars/netty-handler-4.0.44.Final.jar:META-INF/io.netty.versions.properties
/Users/james/.ivy2/cache/io.netty/netty-transport-native-epoll/jars/netty-transport-native-epoll-4.0.44.Final-linux-x86_64.jar:META-INF/io.netty.versions.properties
    at sbtassembly.Assembly$.applyStrategies(Assembly.scala:140)
    at sbtassembly.Assembly$.x$1$lzycompute$1(Assembly.scala:25)
    at sbtassembly.Assembly$.x$1$1(Assembly.scala:23)
    at sbtassembly.Assembly$.stratMapping$lzycompute$1(Assembly.scala:23)
    at sbtassembly.Assembly$.stratMapping$1(Assembly.scala:23)
    at sbtassembly.Assembly$.inputs$lzycompute$1(Assembly.scala:67)
    at sbtassembly.Assembly$.inputs$1(Assembly.scala:57)
    at sbtassembly.Assembly$.apply(Assembly.scala:83)
    at sbtassembly.Assembly$$anonfun$assemblyTask$1.apply(Assembly.scala:245)
    at sbtassembly.Assembly$$anonfun$assemblyTask$1.apply(Assembly.scala:242)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
    at sbt.std.Transform$$anon$4.work(System.scala:63)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.Execute.work(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
  [error] (it:assembly) deduplicate: different file contents found in the following:
  [error] /Users/james/.ivy2/cache/io.netty/netty-buffer/jars/netty-buffer-4.0.44.Final.jar:META-INF/io.netty.versions.properties
  [error] /Users/james/.ivy2/cache/io.netty/netty-common/jars/netty-common-4.0.44.Final.jar:META-INF/io.netty.versions.properties
  [error] /Users/james/.ivy2/cache/io.netty/netty-codec-http/jars/netty-codec-http-4.0.44.Final.jar:META-INF/io.netty.versions.properties
  [error] /Users/james/.ivy2/cache/io.netty/netty-codec/jars/netty-codec-4.0.44.Final.jar:META-INF/io.netty.versions.properties
  [error] /Users/james/.ivy2/cache/io.netty/netty-transport/jars/netty-transport-4.0.44.Final.jar:META-INF/io.netty.versions.properties
  [error] /Users/james/.ivy2/cache/io.netty/netty-handler/jars/netty-handler-4.0.44.Final.jar:META-INF/io.netty.versions.properties

我的sbt版本是0.13.16,scala版本是2.11.8。请有人帮我解决这个错误。提前谢谢

共有1个答案

常光明
2023-03-14

很可能你不需要从所有io.netty库中io.netty.versions.properties,一个可能就足够了。我认为这样的东西应该可以:

assemblyMergeStrategy in assembly := {
 case p if p.endsWith("io.netty.versions.properties") =>
   MergeStrategy.first
 case x =>
   val oldStrategy = (assemblyMergeStrategy in assembly).value
   oldStrategy(x)
}
 类似资料:
  • 当我们运行sbt assembly时,我们会得到以下错误消息: 我们不确定如何更改jvm设置来增加内存,因为我们使用sbt程序集来制作JAR。此外,如果我们在编写代码或构建项目时出现了一些非常严重的错误,这也会对我们有很大帮助;尝试建立一个基本的星火计划有那么多令人头疼的事情!

  • 我想创建一个jar文件,我可以上传到AWS,但每次我运行命令'gradle jar'从命令提示符我得到以下错误。 每当我在命令提示符中运行gradle清除时,我都会得到“构建成功”。下面是build.gradle内容: 我需要添加插件吗?提前谢谢。请帮忙

  • 我必须创建一个jar文件。我是个初学者。我创建了一个清单文件forjar.txt, jar cfm v.jar forjar.txt gmain.class 它创建了一个jar文件。但是,当我运行它的时候,什么也没有发生。当我编译时,创建了将近25个类,因为我的文件中包含了许多类。那么,我应该在创建jar文件时也包括它吗?或者是否有任何简单的方法,包括特定文件夹的全部内容。我的文件夹也包含程序需要

  • 编译java源文件后的下一个逻辑步骤是构建java归档文件,即JAR文件。 使用jar任务,使用Ant创建JAR文件非常简单。 jar任务的常用属性如下 - Sr.No. 属性和描述 1 basedir 输出JAR文件的基目录。 默认情况下,它设置为项目的基本目录。 2 compress 建议Ant在创建JAR文件时压缩文件。 3 keepcompression 虽然compress属性适用于单个

  • 我对Android开发是全新的,我正在尝试在Android中做一个小任务(一个注册表单)。然而,我得到以下错误: 我为Android 4.4 API level 19增加了768(以前为512),但我得到 创建上下文0x3005失败[2013-12-05 13:55:54-Emulator]模拟器:警告:无法使用软件呈现器初始化OpenglES仿真。wglGetExtensionsStringAR

  • 问题内容: 我正在学习Java,但遇到了问题。我创建了6个不同的类,每个类都有自己的方法。我想为每个类创建可执行文件,即6个可执行文件。 到目前为止,我尝试了 我得到“无法访问jarfile cf”。我做错了,但我不知道怎么办。如果这意味着某种意义,我还将使用Eclipse IDE。 问题答案: 为了创建一个.jar文件,你需要使用jar而不是java: 另外,如果要使其可执行,则需要为应用程序指