Spray-Json java.lang.OutOfMemoryError при вызове parseJson

Я использую спрей-json 1.3.0. У меня есть простой кусок Json, который я прошу разобрать спрей, вот он

import org.scalatest.{FlatSpec, MustMatchers}
import spray.json._

class BlockCypherOutputMarshallerTest extends FlatSpec with MustMatchers {

  val expectedOutput = """{"value":7454642,
                         |"script":"76a9148d5968ad26f9e277849ff9f8f39920f28944467388ac",
                         |"addresses":["mtQLgLiqmytKkgE9sVGwypAFsLvkxBQ6XX"],
                         |"script_type":"pay-to-pubkey-hash}""".stripMargin
  val json = expectedOutput.parseJson
  "BlockCypherOutputMarshaller" must "parse an output from the blockcypher api" in {
     //test case
  }
}

однако я получаю сообщение об ошибке в строке, в которой вызывается val json = expectedOutput.parseJson. Вот сообщение об ошибке

> last test:testOnly
[debug] Running TaskDef(com.blockcypher.api.marshallers.BlockCypherOutputMarshallerTest, org.scalatest.tools.Framework$$anon$1@4178c07b, false, [SuiteSelector])
java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3332)
    at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:622)
    at java.lang.StringBuilder.append(StringBuilder.java:202)
    at spray.json.JsonParser.appendSB(JsonParser.scala:179)
    at spray.json.JsonParser.char(JsonParser.scala:138)
    at spray.json.JsonParser.string(JsonParser.scala:129)
    at spray.json.JsonParser.value(JsonParser.scala:62)
    at spray.json.JsonParser.members$1(JsonParser.scala:80)
    at spray.json.JsonParser.object(JsonParser.scala:84)
    at spray.json.JsonParser.value(JsonParser.scala:59)
    at spray.json.JsonParser.parseJsValue(JsonParser.scala:43)
    at spray.json.JsonParser$.apply(JsonParser.scala:28)
    at spray.json.PimpedString.parseJson(package.scala:45)
    at com.blockcypher.api.marshallers.BlockCypherOutputMarshallerTest.<init>(BlockCypherOutputMarshallerTest.scala:16)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at java.lang.Class.newInstance(Class.java:442)
    at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:641)
    at sbt.TestRunner.runTest$1(TestFramework.scala:76)
    at sbt.TestRunner.run(TestFramework.scala:85)
    at sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202)
    at sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202)
    at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:185)
    at sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202)
    at sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202)
    at sbt.TestFunction.apply(TestFramework.scala:207)
    at sbt.Tests$$anonfun$9.apply(Tests.scala:216)
    at sbt.Tests$$anonfun$9.apply(Tests.scala:216)
[error] Could not run test com.blockcypher.api.marshallers.BlockCypherOutputMarshallerTest: java.lang.OutOfMemoryError: Java heap space
[debug] Summary for ScalaCheck not available.
[debug] Summary for specs2 not available.
[info] ScalaTest
[info] Run completed in 1 second, 541 milliseconds.
[info] Total number of tests run: 0
[info] Suites: completed 0, aborted 0
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
[info] No tests were executed.
[error] Error: Total 0, Failed 0, Errors 0, Passed 0
[error] Error during tests:
[error]     com.blockcypher.api.marshallers.BlockCypherOutputMarshallerTest
[error] (test:testOnly) sbt.TestsFailedException: Tests unsuccessful

Я не уверен, почему у меня заканчивается место в куче, кажется, что часть json достаточно проста, и у меня нет проблем с любыми другими тестовыми примерами json аналогичного размера.


person Chris Stewart    schedule 21.12.2015    source источник
comment
Это работает без поля адресов?   -  person ppopoff    schedule 21.12.2015
comment
Я удалил поле addresses из expectedOutput и все равно получаю то же сообщение об ошибке   -  person Chris Stewart    schedule 21.12.2015


Ответы (1)


Вам нужно закрыть цитату в последней строке «pay-to-pubkey-hash

"script_type":"pay-to-pubkey-hash}"""

должно быть

"script_type":"pay-to-pubkey-hash"}"""
person mavarazy    schedule 21.12.2015