Tôi đã tạo một dự án Android mới trong Intellij 14, sau đó thêm Scala SDK 2.11.6 vào nó (phạm vi provided
là tùy chọn duy nhất có hiệu quả đối với tôi). Dự án chạy tốt nếu tôi không sử dụng bất kỳ lớp Scala nào. Nhưng một khi tôi sử dụng, ví dụ, chuỗi suy, ngay khi đang chạy, ứng dụng bị treo với lỗi này:Dự án Android/Scala trong IntelliJ 14 biên dịch, nhưng bị treo khi khởi chạy không tìm thấy lớp Scala
06-20 18:36:27.277 1995-1995/com.pcn.android.games.jacks D/AndroidRuntime﹕ Shutting down VM
06-20 18:36:27.289 1995-1995/com.pcn.android.games.jacks E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.pcn.android.games.jacks, PID: 1995
java.lang.NoClassDefFoundError: Failed resolution of: Lscala/StringContext;
at com.pcn.android.games.jacks.MyActivity.onCreate(MyActivity.scala:16)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.ClassNotFoundException: Didn't find class "scala.StringContext" on path: DexPathList[[zip file "/data/app/com.pcn.android.games.jacks-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.pcn.android.games.jacks.MyActivity.onCreate(MyActivity.scala:16)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Suppressed: java.lang.ClassNotFoundException: scala.StringContext
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 15 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
tôi sử dụng IntelliJ 14.1.3
, Java 1.7.0_80
. Tệp proguard-project.txt
của tôi trống, nhưng điều này vẫn còn cho dù tôi bật Proguard hay không.
Tôi đã làm gì sai khiến các lớp Scala không bị xem trong thời gian chạy?
Từ trang Scala On Android, http://macroid.github.io/ScalaOnAndroid.html tạo hệ thống bạn đang sử dụng: sbt với plugin Android hoặc Gradle với gradle-android-scala-plugin; dựa trên lịch sử SO của bạn - tôi đoán sbt với plugin Android nhưng chỉ để đảm bảo. –
@MorrisonChang thực sự là IntelliJ 14 (không phải Android Studio) với bất kỳ thứ gì được tích hợp sẵn, không phải sbt hoặc gradle. – Phil
Bạn có quen với [project] này (https://github.com/yareally/android-scala-intellij-no-sbt-plugin) không? – Eugene