使用 jenkins 构建时找不到 Kotlin 类

Posted

技术标签:

【中文标题】使用 jenkins 构建时找不到 Kotlin 类【英文标题】:Kotlin class not found when built with jenkins 【发布时间】:2017-05-18 14:43:34 【问题描述】:

在我的机器上本地成功构建了我的应用程序,并且在单击以打开 Kotlin Activity 时运行良好,例如:

galleryLayout.setOnClickListener(view -> startActivity(new Intent(PreferencesActivity.this, GalleryActivity.class)));

但是在 Jenkins CI 上成功构建后,点击操作会导致应用崩溃:

Fatal Exception: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/noodoe/sunray/settings/preferences/gallery/GalleryActivity;
   at com.noodoe.sunray.settings.preferences.PreferencesActivity.lambda$setupListener$9(PreferencesActivity.java:248)
   at com.noodoe.sunray.settings.preferences.PreferencesActivity.access$lambda$9(PreferencesActivity.java)
   at com.noodoe.sunray.settings.preferences.PreferencesActivity$$Lambda$10.onClick(Unknown Source)
   at android.view.View.performClick(View.java:5226)
   at android.view.View$PerformClick.run(View.java:21266)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:168)
   at android.app.ActivityThread.main(ActivityThread.java:5845)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
Caused by java.lang.ClassNotFoundException: Didn't find class "com.noodoe.sunray.settings.preferences.gallery.GalleryActivity" on path: DexPathList[[zip file "/data/app/com.noodoe.sunray.alpha-1/base.apk"],nativeLibraryDirectories=[/data/app/com.noodoe.sunray.alpha-1/lib/arm, /data/app/com.noodoe.sunray.alpha-1/base.apk!/lib/armeabi-v7a, /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.noodoe.sunray.settings.preferences.PreferencesActivity.lambda$setupListener$9(PreferencesActivity.java:248)
   at com.noodoe.sunray.settings.preferences.PreferencesActivity.access$lambda$9(PreferencesActivity.java)
   at com.noodoe.sunray.settings.preferences.PreferencesActivity$$Lambda$10.onClick(Unknown Source)
   at android.view.View.performClick(View.java:5226)
   at android.view.View$PerformClick.run(View.java:21266)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:168)
   at android.app.ActivityThread.main(ActivityThread.java:5845)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)

这是我的build.gradle,如果您有任何想法,请提供帮助。谢谢!

【问题讨论】:

【参考方案1】:

运行 gradle clean 并重试构建。不确定您的 Jenkins 脚本以及 CI 工作流程的运行方式,但始终建议在构建之前进行清理。

为什么不在此处发布您的 Jenkinsfile / Jenkins CI 脚本 =)

【讨论】:

以上是关于使用 jenkins 构建时找不到 Kotlin 类的主要内容,如果未能解决你的问题,请参考以下文章

在 Jenkins 上运行时找不到 gem rspec-core (>= 0.a) (Gem::GemNotFoundException)

使用 Jenkins 构建 APK 时出现 kotlin.KotlinNullPointerException(无错误消息)

使用 CakeBuild 构建 Xamarin.Android 项目时找不到 mscorlib

使用 Palantir Gradle 插件构建 Docker 容器时找不到 .jar 文件

构建 XCTest 时找不到文件错误

nmake:构建 OpenSSL 时找不到命令