arthas實(shí)踐 sbt Missing scala-library.jar

  • 在使用sbt構(gòu)建一個spark 的項(xiàng)目的時候 遇到一個很奇怪的問題 Missing scala-library.jar 如下圖. 按理來說如果少jar包sbt 會自動去下載的 這個就很奇怪了.


  • 于是想到用arthas 看一下.首先在arthas中用jad反編譯了下scala.sys.pachage$ 的代碼 .

$ jad -c 42a57993 "scala.sys.package$"

ClassLoader:
+-sun.misc.Launcher$AppClassLoader@42a57993
  +-sun.misc.Launcher$ExtClassLoader@10d307f1

Location:
/usr/local/Cellar/sbt/1.2.8/libexec/bin/sbt-launch.jar

/*
 * Decompiled with CFR 0_132.
 */
package scala.sys;

import scala.runtime.Nothing$;
import scala.sys.SystemProperties;

public final class package$ {
    public static final package$ MODULE$;

    private package$() {
        MODULE$ = this;
    }

    static {
        new scala.sys.package$();
    }

    public static SystemProperties props() {
        return new SystemProperties();
    }

    public static Nothing$ error(String string) {
        throw new RuntimeException(string);
    }
}

Affect(row-cnt:1) cost in 361 ms.
  • 這里的error只是拋了個異常 沒有其他的東西. 那只能在堆棧中往上繼續(xù)找. 看到sbt.Defaults$.file$1這個方法比較像. 繼續(xù)反編譯看下代碼
    這塊反編譯代碼比較長 , 所以可以將結(jié)果是保存到一個文件中
$ jad "sbt.Defaults$" >> &
job id  : 10
cache location  : /Users/.../logs/arthas-cache/27659/10

在logs/arthas-cache/27659/10文件中找到file$1這個方法

 841     private static final File file$1(String id, ConfigurationReport toolReport$1) {
 842         return (File)Defaults$.files$1(id, toolReport$1).headOption().getOrElse(() -> package$.MODULE$.error(new StringContext((Seq)Predef$.MODULE$.wrapRefArray(new String[]     {"Missing ", ".jar"})).s((Seq)Predef$.MODULE$.genericWrapArray(new Object[]{id}))));
 843     }
  • 上面這塊代碼粗略一看 是找文件, 如果文件沒找到就會拋出一個missing 的異常 .
  • 于是 使用下面的命令看一下傳的入?yún)?/li>
watch -b -x 4 "sbt.Defaults$" "file$1" params
  • 果然在參數(shù)中找到了scala-library字樣 并且還有這個jar包路徑.


  • 那繼續(xù)我們?nèi)ミ@個路徑下看下 , 如下圖確實(shí)少了jar文件. 但是目錄是有的. 這很有可能是以前下載jar文件時中斷了, 導(dǎo)致jar包沒有但是目錄還在


  • 那處理就很簡單. 把這個目錄刪掉. 重新構(gòu)建. 重新構(gòu)建 sbt就會自動下載jar包了 問題解決了...


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容