java8*1 をダウンロードして、sbt0.12.3で以下のようなjavaファイルコンパイルしたら、エラーになった。*2
追記
sbt0.13系では、Scala2.10.xになったので、対応してる、はず
import java.util.function.*; public class A{ public static void main(String[] args){ Function<Integer,Integer> b = a -> a + 1; System.out.println(b.apply(2)); } }
まだ全然対応してないみたい。Scala本体は最近2.11に向けてjava8対応を始めてるみたいだけど、sbtはいつになるんだろう・・・。java8試すのに、mavenとかIDE起動させてやるの面倒・・・。sbtでコンパイルできないということは、現状「java8 + Scala」な環境構築かなりしんどいし、「java8 + Scala」は、もう少し環境整備されるの待ったほうがよさそう・・・。
ここに
CONSTANT_MethodHandle 15 CONSTANT_MethodType 16 CONSTANT_InvokeDynamic 18
の定義がない
https://github.com/sbt/sbt/blob/v0.12.3/util/classfile/ClassFile.scala#L49-L65
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4
https://github.com/sbt/sbt/blob/v0.12.3/util/classfile/Parser.scala#L141-L151
以下stacktrace
java.lang.RuntimeException: Unknown constant: 18 at scala.sys.package$.error(package.scala:27) at scala.Predef$.error(Predef.scala:123) at sbt.classfile.Parser$.getConstant(Parser.scala:150) at sbt.classfile.Parser$.parse$1(Parser.scala:127) at sbt.classfile.Parser$.sbt$classfile$Parser$$parseConstantPool(Parser.scala:132) at sbt.classfile.Parser$$anon$1.<init>(Parser.scala:32) at sbt.classfile.Parser$.parseImpl(Parser.scala:24) at sbt.classfile.Parser$.sbt$classfile$Parser$$parse(Parser.scala:20) at sbt.classfile.Parser$$anonfun$apply$1.apply(Parser.scala:19) at sbt.classfile.Parser$$anonfun$apply$1.apply(Parser.scala:19) at sbt.Using.apply(Using.scala:25) at sbt.classfile.Parser$.apply(Parser.scala:19) at sbt.classfile.Analyze$$anonfun$analyze$1$1.apply(Analyze.scala:39) at sbt.classfile.Analyze$$anonfun$analyze$1$1.apply(Analyze.scala:38) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) at scala.collection.immutable.Set$Set1.foreach(Set.scala:86) at scala.collection.TraversableLike$class.map(TraversableLike.scala:233) at scala.collection.immutable.Set$Set1.scala$collection$SetLike$$super$map(Set.scala:73) at scala.collection.SetLike$class.map(SetLike.scala:93) at scala.collection.immutable.Set$Set1.map(Set.scala:73) at sbt.classfile.Analyze$.analyze$1(Analyze.scala:38) at sbt.classfile.Analyze$.apply(Analyze.scala:86) at sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileJava$1$1.apply$mcV$sp(AggressiveCompile.scala:81) at sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileJava$1$1.apply(AggressiveCompile.scala:81) at sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileJava$1$1.apply(AggressiveCompile.scala:81) at sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:101) at sbt.compiler.AggressiveCompile$$anonfun$4.compileJava$1(AggressiveCompile.scala:80) at sbt.compiler.AggressiveCompile$$anonfun$4.apply(AggressiveCompile.scala:88) at sbt.compiler.AggressiveCompile$$anonfun$4.apply(AggressiveCompile.scala:60) at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:24) at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:22) at sbt.inc.Incremental$.cycle(Incremental.scala:52) at sbt.inc.Incremental$.compile(Incremental.scala:29) at sbt.inc.IncrementalCompile$.apply(Compile.scala:20) at sbt.compiler.AggressiveCompile.compile2(AggressiveCompile.scala:96) at sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:44) at sbt.compiler.AggressiveCompile.apply(AggressiveCompile.scala:31) at sbt.Compiler$.apply(Compiler.scala:79) at sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:574) at sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:574) at sbt.Scoped$$anonfun$hf2$1.apply(Structure.scala:578) at sbt.Scoped$$anonfun$hf2$1.apply(Structure.scala:578) at scala.Function1$$anonfun$compose$1.apply(Function1.scala:49) at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311) at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311) at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:41) at sbt.std.Transform$$anon$5.work(System.scala:71) at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232) at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232) at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18) at sbt.Execute.work(Execute.scala:238) at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232) at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232) at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160) at sbt.CompletionService$$anon$2.call(CompletionService.scala:30) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) [error] (compile:compile) Unknown constant: 18