错误记录记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误记录记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )相关的知识,希望对你有一定的参考价值。

前言

尝试在 android 系统中执行 Java 程序 , 【开发环境】Android 命令行中执行 Java 程序 ( IntelliJ IDEA 中创建 Java / Kotlin 工程 | dx 打包 DEX 字节码文件 | dalvikvm 命令 ) , 出现的错误记录 ;





一、Android 命令行与 PC 可执行 JAR 文件不兼容



尝试将 【开发环境】Android 命令行中执行 Java 程序 ( IntelliJ IDEA 中创建 Java / Kotlin 工程 | dx 打包 DEX 字节码文件 | dalvikvm 命令 ) 三、编译在 PC 上可执行的 Java / Kotlin JAR 包 生成的 JAR 包打包成 dex 文件 , 打包过程中出错 ;

报错信息 :

D:\\002_Project\\003_Java_Work\\workspace\\AndroidShell\\out\\artifacts>dx --dex --output kotlin.dex AndroidShell_jar\\AndroidShell.jar

PARSE ERROR:
class name (kotlin/reflect/jvm/internal/impl/serialization/deserialization/builtins/BuiltInsResourceLoader) does not match path (META-INF/versions/9/kotlin/reflect/jvm/internal/impl/serialization/deserialization/builtins/BuiltInsResourceLoader.class)
...while parsing META-INF/versions/9/kotlin/reflect/jvm/internal/impl/serialization/deserialization/builtins/BuiltInsResourceLoader.class
1 error; aborting
D:\\002_Project\\003_Java_Work\\workspace\\AndroidShell\\out\\artifacts>

直接打包字节码文件是成功的 , 打包 PC 上的可执行文件失败 ;





二、Android 命令行使用 dalvik 命令不能直接执行 Kotlin 编译的 dex 文件



使用

dalvikvm -cp kotlin.dex StudentKt

命令 , 执行 Kotlin 编译的 dex 文件 , 报错如下 :

1|walleye:/data/system/debug/AndroidShell # dalvikvm -cp kotlin.dex StudentKt
Exception in thread "main" java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/jvm/internal/Intrinsics;
        at StudentKt.main(Unknown Source:2)
Caused by: java.lang.ClassNotFoundException: Didn't find class "kotlin.jvm.internal.Intrinsics" on path: DexPathList[[dex file "kotlin.dex"],nativeLibraryDirectories=[/system/lib64, /system/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        ... 1 more
1|walleye:/data/system/debug/AndroidShell #

Java 代码编译的 Dex 文件可以执行 ;

以上是关于错误记录记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )的主要内容,如果未能解决你的问题,请参考以下文章

错误记录Android Studio 向 GitHub 提交代码报错 ( Push failed: Failed with error: Could not read | 使用命令行提交代码 )(代码

错误记录Android Studio 向 GitHub 提交代码报错 ( Push failed: Failed with error: Could not read | 使用命令行提交代码 )(代码

错误记录Windows 系统 bat 脚本报错 ( 使用 pause 拦截窗口自动关闭 | 方便查看错误 )

错误记录Android 应用执行报错 ( java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[ )

错误记录编译 Android 版本的 ijkplayer 报错 ( ./init-android.sh: 第 37 行: cd: android/contrib/: 没有那个文件或目录 )

Ionic3 填坑记录 - java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.Dex