Scala长字符串错误

Scala长字符串错误,scala,scala-2.10,Scala,Scala 2.10,我正在研究Scala 2.10.2。运行以下简单代码时: object Test { var input = "**** ANY STRING LONGER THAN 65535 CHARACTERS ****" def main(args: Array[String]) { println(input) } } 将引发以下错误: java.lang.ClassFormatError: Unknown constant tag 67 in class file Tes

我正在研究Scala 2.10.2。运行以下简单代码时:

object Test {
  var input  = "**** ANY STRING LONGER THAN 65535 CHARACTERS ****"
  def main(args: Array[String]) {
      println(input)
  }
}
将引发以下错误:

java.lang.ClassFormatError: Unknown constant tag 67 in class file Test$
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at Test.main(05.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
.....
这是一个bug还是一个奇怪的限制


谢谢,

这是因为普通的旧Java限制。在类文件表中,常量_Utf8_info表示字符串文本的信息,以及几种类型的名称:类型、成员、描述符和属性。 常量_Utf8_info表的格式只有两个表示字符串文字信息的字节长度的非单字节;我相信这就是设定这种限制的地方。
请参阅

中的更多内容,因为Scala在封面下使用Java类,所以字符串长度限制是Java中字符串文字的最大长度,只能为65535个字符。有关更多详细信息,请参阅此问题的公认答案: