在命令行上使用SBT运行时测试失败,但在IDE中运行时则不会

时间:2016-01-20 18:23:53

标签: unit-testing intellij-idea sbt apache-flink

当我通过IntelliJ IDE运行我的Flink应用程序的单元测试时,它们没有任何问题。当我通过SBT运行它们时,抛出了一些例外(见下文)。 这些例外的原因是什么?我一直无法追踪它们。

编辑:值得注意的是IntelliJ中的项目是作为“sbt项目”创建的,因此IDE了解项目依赖项的方式也是通过build.sbt文件。 为什么从命令行运行sbt时此文件不够用?

$ sbt clean test
[info] Loading global plugins from /Users/myuser/.sbt/0.13/plugins
[info] Loading project definition from /Users/myuser/projects/anonymizer/project
[info] Set current project to anonymizer (in build file:/Users/myuser/projects/anonymizer/)
[success] Total time: 8 s, completed Jan 20, 2016 6:15:20 PM
[info] Updating {file:/Users/myuser/projects/anonymizer/}anonymizer...
[info] Resolving jline#jline;2.12.1 ...
[info] Done updating.
[info] Compiling 8 Scala sources to /Users/myuser/projects/anonymizer/target/scala-2.11/classes...
[info] Compiling 2 Scala sources to /Users/myuser/projects/anonymizer/target/scala-2.11/test-classes...
[error] Test myorg.mypackage.TestMyClass failed: java.nio.file.FileAlreadyExistsException: /var/folders/n4/_bl8xyqs15xbgy37k889plm80000gn/T/TestBaseUtils-logdir9030651763276830933.tmp/jobmanager.out, took 0.0 sec
[error]     at sun.nio.fs.UnixException.translateToIOException(UnixException.java:88)
[error]     at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
[error]     at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
[error]     at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
[error]     at java.nio.file.Files.newByteChannel(Files.java:361)
[error]     at java.nio.file.Files.createFile(Files.java:632)
[error]     at org.apache.flink.test.util.TestBaseUtils.startCluster(TestBaseUtils.java:136)
[error]     at org.apache.flink.test.util.TestBaseUtils.startCluster(TestBaseUtils.java:124)
[error]     at org.apache.flink.streaming.util.StreamingMultipleProgramsTestBase.setup(StreamingMultipleProgramsTestBase.java:72)
[error]     ...
2016-01-20 18:15:38 INFO  FlinkMiniCluster:230 - Starting FlinkMiniCluster.
2016-01-20 18:15:38 INFO  Slf4jLogger:80 - Slf4jLogger started
2016-01-20 18:15:38 INFO  BlobServer:94 - Created BLOB server storage directory /var/folders/n4/_bl8xyqs15xbgy37k889plm80000gn/T/blobStore-07aa1e12-785d-4a18-bb16-6c2664f6b4f2

[...]

2016-01-20 18:15:39 INFO  Task:470 - Loading JAR files for task Source: Collection Source -> Flat Map -> Sink: Unnamed (1/1)
2016-01-20 18:15:39 INFO  Task:858 - Source: Collection Source -> Flat Map -> Sink: Unnamed (1/1) switched to FAILED with exception.
java.lang.Exception: Could not load the task's invokable class.
    at org.apache.flink.runtime.taskmanager.Task.loadAndInstantiateInvokable(Task.java:729)
    at org.apache.flink.runtime.taskmanager.Task.run(Task.java:474)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.streaming.runtime.tasks.SourceStreamTask
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.flink.runtime.taskmanager.Task.loadAndInstantiateInvokable(Task.java:725)
    ... 2 more
2016-01-20 18:15:39 INFO  Task:672 - Freeing task resources for Source: Collection Source -> Flat Map -> Sink: Unnamed (1/1)
2016-01-20 18:15:39 INFO  TestingTaskManager:128 - Unregistering task and sending final execution state FAILED to JobManager for task Source: Collection Source -> Flat Map -> Sink: Unnamed (717fa0d09f9592d62db7b9e52f08de6e)
2016-01-20 18:15:39 INFO  ExecutionGraph:934 - Source: Collection Source -> Flat Map -> Sink: Unnamed (1/1) (717fa0d09f9592d62db7b9e52f08de6e) switched from DEPLOYING to FAILED
2016-01-20 18:15:39 INFO  TestingJobManager:137 - Status of job f8d59cfb76aaaeb016a14120125338fd (Flink Streaming Job) changed to FAILING.
java.lang.Exception: Could not load the task's invokable class.
    at org.apache.flink.runtime.taskmanager.Task.loadAndInstantiateInvokable(Task.java:729)
    at org.apache.flink.runtime.taskmanager.Task.run(Task.java:474)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.streaming.runtime.tasks.SourceStreamTask
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.flink.runtime.taskmanager.Task.loadAndInstantiateInvokable(Task.java:725)
    ... 2 more
2016-01-20 18:15:39 INFO  JobClientActor:280 - 01/20/2016 18:15:39  Source: Collection Source -> Flat Map -> Sink: Unnamed(1/1) switched to FAILED 
java.lang.Exception: Could not load the task's invokable class.
    at org.apache.flink.runtime.taskmanager.Task.loadAndInstantiateInvokable(Task.java:729)
    at org.apache.flink.runtime.taskmanager.Task.run(Task.java:474)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.streaming.runtime.tasks.SourceStreamTask
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.flink.runtime.taskmanager.Task.loadAndInstantiateInvokable(Task.java:725)
    ... 2 more

2016-01-20 18:15:39 INFO  JobClientActor:280 - 01/20/2016 18:15:39  Job execution switched to status FAILING.

[...]

这是我的build.sbt文件:

name := "anonymizer"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
  "org.apache.flink" % "flink-streaming-scala_2.11" % "0.10.1",
  "org.apache.flink" % "flink-clients_2.11" % "0.10.1",
  "org.apache.flink" % "flink-connector-kafka_2.11" % "0.10.1",
  "com.fasterxml.jackson.module" % "jackson-module-scala_2.11" % "2.6.3"
)
// Dependencies needed by the unit tests when using junit
libraryDependencies ++= Seq(
  "com.novocode" % "junit-interface" % "0.11" % "test",
  "org.apache.flink" % "flink-streaming-contrib_2.11" % "0.10.1",
  "org.apache.flink" % "flink-streaming-java_2.11" % "0.10.1" % "test" classifier "tests",
  "org.apache.flink" % "flink-core_2.11" % "0.10.1" % "test" classifier "tests",
  "org.apache.flink" % "flink-runtime_2.11" % "0.10.1" % "test" classifier "tests",
  "org.apache.flink" % "flink-test-utils_2.11" % "0.10.1" % "test"
)

0 个答案:

没有答案