Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Intellij14中的Android/Scala项目可以编译,但启动时找不到Scala类会崩溃_Android_Scala_Intellij Idea_Dex_Intellij 14 - Fatal编程技术网

Intellij14中的Android/Scala项目可以编译,但启动时找不到Scala类会崩溃

Intellij14中的Android/Scala项目可以编译,但启动时找不到Scala类会崩溃,android,scala,intellij-idea,dex,intellij-14,Android,Scala,Intellij Idea,Dex,Intellij 14,我在Intellij 14中创建了一个新的Android项目,然后将Scala SDK 2.11.6添加到该项目中(scope提供的是唯一适合我的选项)。如果我不使用任何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

我在Intellij 14中创建了一个新的Android项目,然后将Scala SDK 2.11.6添加到该项目中(scope
提供的
是唯一适合我的选项)。如果我不使用任何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
我使用IntelliJ
14.1.3
,Java
1.7.0\u 80
。我的
proguard project.txt
文件是空的,但无论我是否打开proguard,这种情况都会持续存在

我做错了什么,阻止Scala类在运行时被看到

我做错了什么,阻止Scala类在运行时被看到

如果不查看构建文件和应用程序的构建方式,很难判断。我建议您使用Gradle构建系统并使用一个AndroidScala插件,比如一个。大约3-4个月前,我在我的一个应用程序中使用了它,它很有魅力


基于Gradle的构建将为您节省大量时间,因为它得到了Google的官方支持,并且被许多人使用(所以您更有可能从社区获得帮助)。它还支持一些基于Intellij的构建系统不支持的功能,如构建风格/拆分,并由谷歌工程师不断优化以获得尽可能快的构建时间。

从Android页面上的Scala,您使用的构建系统是:带Android插件的sbt还是带Gradle Android Scala插件的Gradle;基于您的SO历史-我猜sbt带有Android插件,但只是为了确保。@MorrisonChang实际上是IntelliJ 14(不是Android Studio)带有内置的任何东西,而不是sbt或gradle。您熟悉这一点吗?您使用的是“提供的”范围,这意味着在运行应用程序时,库将不在IntelliJ的运行时类路径中,但汇编将成功。您必须在运行时包含lib。考虑使用SBT或Gradle进行依赖管理。您的系统上有Scala SDK吗?除了IDE中添加的SDK之外。