Playframework 在lib目录中包含自定义JAR时出错-play framework 2.0

Playframework 在lib目录中包含自定义JAR时出错-play framework 2.0,playframework,playframework-2.0,akka,apache-commons-io,Playframework,Playframework 2.0,Akka,Apache Commons Io,当我在lib目录中包含我的非托管jar集时,在任何POST请求中都会出现此错误。如果我删除lib目录,一切正常。如果它在那里,我会得到这个错误。。有什么想法吗 play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[NoSuchMethodError: org.apache.commons.io.IOUtils.closeQuietly(Ljava/io/Closeable;)V]] at play.co

当我在lib目录中包含我的非托管jar集时,在任何POST请求中都会出现此错误。如果我删除lib目录,一切正常。如果它在那里,我会得到这个错误。。有什么想法吗

play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[NoSuchMethodError: org.apache.commons.io.IOUtils.closeQuietly(Ljava/io/Closeable;)V]]
at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:134) [play_2.9.1.jar:2.0.4]
at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:115) [play_2.9.1.jar:2.0.4]
at akka.actor.Actor$class.apply(Actor.scala:318) [akka-actor.jar:2.0.2]
at play.core.ActionInvoker.apply(Invoker.scala:113) [play_2.9.1.jar:2.0.4]
at akka.actor.ActorCell.invoke(ActorCell.scala:626) [akka-actor.jar:2.0.2]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:197) [akka-actor.jar:2.0.2]
Caused by: java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.closeQuietly(Ljava/io/Closeable;)V
at org.apache.commons.io.FileUtils.doCopyFile(FileUtils.java:1150) ~[commons-io-2.4.jar:2.4]
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1091) ~[commons-io-2.4.jar:2.4]
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1038) ~[commons-io-2.4.jar:2.4]
at controllers.IAcontroller.submit(IAcontroller.java:161) ~[classes/:na]
at Routes$$anonfun$routes$1$$anonfun$apply$13$$anonfun$apply$14.apply(routes_routing.scala:132) ~[classes/:na]
at Routes$$anonfun$routes$1$$anonfun$apply$13$$anonfun$apply$14.apply(routes_routing.scala:132) ~[classes/:na]

好了,Play 2.0.4通过fluentlenium本身带来的硒元素包含
commons io:commons io:2.0.1
。我怀疑您在
lib
文件夹中导入了不同版本的
commons io

您可以使用播放控制台上的
依赖项
来检查这一点:

[my_project] $ dependencies
...
| commons-io:commons-io:2.0.1 | org.seleniumhq.selenium:selenium-firefox-driver:2.16.1 | As commons-io.jar |
...
[my_project] $
因此,要么从播放中删除依赖项(如果您没有使用fluentlenium),要么从lib目录中删除依赖项

要从
fluentlenium
中删除可传递依赖项,请使用以下命令编辑
Build.scala

val appDependencies = Seq(
     ...
     ("org.fluentlenium" % "fluentlenium-festassert" % "0.5.6" % "test") .exclude("commons-io", "commons-io")
    )

好了,Play 2.0.4通过fluentlenium本身带来的硒元素包含
commons io:commons io:2.0.1
。我怀疑您在
lib
文件夹中导入了不同版本的
commons io

您可以使用播放控制台上的
依赖项
来检查这一点:

[my_project] $ dependencies
...
| commons-io:commons-io:2.0.1 | org.seleniumhq.selenium:selenium-firefox-driver:2.16.1 | As commons-io.jar |
...
[my_project] $
因此,要么从播放中删除依赖项(如果您没有使用fluentlenium),要么从lib目录中删除依赖项

要从
fluentlenium
中删除可传递依赖项,请使用以下命令编辑
Build.scala

val appDependencies = Seq(
     ...
     ("org.fluentlenium" % "fluentlenium-festassert" % "0.5.6" % "test") .exclude("commons-io", "commons-io")
    )

我正在使用jar pdf-transcoder.jar,它包含一个旧版本的commons io。但这种依赖性对我的应用程序来说是必要的。我无法移除它。我如何解决拥有两个版本的commons io,但只想使用新版本的问题我使用的是jar pdf-transcoder.jar,它包含一个旧版本的commons io。但这种依赖性对我的应用程序来说是必要的。我无法移除它。我如何解决拥有两个commons io版本,但只想使用新版本的问题