4

私は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)
.....

これはバグですか、それとも奇妙な制限ですか?

ありがとう、

4

2 に答える 2

10

Scala は内部で Java クラスを使用しているため、文字列の長さの制限は、Java の文字列リテラルの最大長であり、65535 文字しか使用できません。詳細については、この質問に対する受け入れられた回答を参照してください: Java の初期化文字列のサイズ

于 2013-06-29T16:13:46.967 に答える