scala.serilable ClassNotFoundException問題記錄

aaacarrot發表於2024-10-15

背景:

程式中要使用 Holt-Winters與時間序列預測,用於預測一些未來的溫度值。
使用了阿里的一個依賴包下面的 TimeSeriesUtils 類, 並且用這個類的 calcHoltWintersLBFGSB 方法

引入的依賴如下:

<dependency>
  <groupId>com.alibaba.alink</groupId>
  <artifactId>alink_core_flink-1.10_2.11</artifactId>
  <version>${alibaba.alink.version}</version>
</dependency>

...

<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.13.13</version>
</dependency>

寫了一個測試方法

    public static void main(String[] args) {
        // 過濾後資料
        double[] data = new double[]{11.0, 11.0, 14.0, 18.0, 19.0, 16.0, 18.0, 17.0, 17.0, 21.0, 21.0, 22.0, 21.0, 22.0, 20.0, 16.0, 18.0, 19.0, 21.0, 24.0, 16.0, 19.0, 21.0, 21.0, 23.0, 23.0, 23.0, 22.0, 24.0, 24.0, 25.0, 19.0, 21.0, 24.0, 27.0, 25.0, 25.0, 28.0, 28.0, 26.0, 22.0, 18.0, 20.0, 24.0, 23.0, 26.0, 25.0, 21.0, 19.0, 21.0, 24.0, 24.0, 18.0, 14.0, 16.0, 20.0, 17.0, 22.0, 23.0, 23.0, 25.0, 22.0, 22.0, 22.0, 21.0, 16.0, 17.0, 17.0, 15.0, 22.0, 25.0, 25.0, 22.0, 22.0, 24.0, 24.0, 26.0, 25.0, 28.0, 28.0, 27.0, 18.0, 17.0, 19.0, 26.0, 26.0, 27.0, 27.0, 28.0, 27.0, 22.0, 25.0, 27.0, 25.0, 27.0, 28.0, 29.0, 30.0, 30.0, 30.0, 29.0, 25.0, 23.0, 25.0, 24.0, 22.0, 27.0, 25.0, 25.0, 25.0, 28.0, 29.0, 30.0, 32.0, 31.0, 29.0, 27.0, 28.0, 30.0, 27.0, 26.0, 25.0, 27.0, 26.0, 21.0, 23.0, 22.0, 20.0, 26.0, 28.0, 30.0, 31.0, 32.0, 32.0, 32.0, 33.0, 33.0, 34.0, 34.0, 29.0, 31.0, 29.0, 29.0, 27.0, 29.0, 28.0, 29.0, 27.0, 27.0, 27.0, 28.0, 30.0, 30.0, 31.0, 31.0, 31.0, 33.0, 33.0, 35.0, 35.0, 32.0, 28.0, 28.0, 28.0, 33.0, 34.0, 34.0, 31.0, 32.0, 34.0, 34.0, 35.0, 34.0, 33.0, 30.0, 28.0, 30.0, 31.0, 34.0, 35.0, 34.0, 33.0, 33.0, 29.0, 31.0, 34.0, 35.0, 34.0, 34.0, 32.0, 28.0, 30.0, 32.0, 32.0, 32.0, 34.0, 36.0, 36.0, 36.0, 35.0, 33.0, 33.0, 32.0, 32.0, 32.0, 34.0, 35.0, 34.0, 33.0, 33.0, 34.0, 31.0, 27.0, 29.0, 29.0, 32.0, 34.0, 34.0, 35.0, 37.0, 36.0, 36.0, 33.0, 33.0, 35.0, 34.0, 35.0, 33.0, 31.0, 30.0, 31.0, 34.0, 35.0, 35.0, 35.0, 36.0, 31.0, 31.0, 33.0, 35.0, 33.0, 32.0, 31.0, 31.0, 31.0, 32.0, 30.0, 31.0, 33.0, 35.0, 36.0, 33.0, 35.0, 35.0, 36.0, 36.0, 35.0, 33.0, 34.0, 33.0, 34.0, 34.0, 33.0, 33.0, 31.0, 31.0, 30.0, 32.0, 31.0, 32.0, 33.0, 32.0, 33.0, 34.0, 33.0, 33.0, 33.0, 33.0, 32.0, 30.0, 31.0, 30.0, 32.0, 33.0, 33.0, 29.0, 29.0, 29.0, 30.0, 30.0, 30.0, 30.0, 31.0, 30.0, 31.0, 31.0, 28.0, 30.0, 29.0, 28.0, 27.0, 26.0, 28.0, 26.0, 29.0, 31.0, 30.0, 29.0, 30.0, 29.0, 27.0, 27.0, 27.0, 27.0, 28.0, 29.0, 29.0, 26.0, 27.0, 28.0, 28.0, 25.0, 22.0, 24.0, 26.0, 27.0, 29.0, 29.0, 29.0, 24.0, 25.0, 22.0, 22.0, 24.0, 26.0, 21.0, 21.0, 22.0, 18.0, 20.0, 21.0, 21.0, 21.0, 23.0, 24.0, 26.0, 25.0, 26.0, 25.0, 26.0, 27.0, 28.0, 20.0, 20.0, 20.0, 23.0, 23.0, 24.0, 23.0, 22.0, 20.0, 22.0, 19.0, 25.0, 22.0, 22.0, 22.0, 23.0, 25.0, 27.0, 25.0, 26.0, 25.0, 24.0, 25.0, 24.0, 14.0, 21.0, 22.0, 23.0, 24.0, 18.0, 19.0, 18.0, 20.0, 20.0, 24.0, 27.0, 28.0, 21.0, 15.0, 13.0, 14.0, 16.0, 18.0, 19.0, 20.0, 21.0, 20.0, 15.0, 17.0, 19.0, 19.0, 19.0, 17.0, 20.0, 20.0, 22.0, 19.0, 21.0, 22.0, 12.0, 15.0, 18.0, 20.0, 22.0, 25.0, 26.0, 26.0, 28.0, 27.0, 28.0, 28.0, 25.0, 27.0, 28.0, 27.0, 24.0, 20.0, 19.0, 23.0, 24.0, 25.0, 27.0, 23.0, 21.0, 22.0, 26.0, 22.0, 25.0, 23.0, 24.0, 22.0, 22.0, 24.0, 25.0, 28.0, 28.0, 28.0, 28.0, 27.0, 26.0, 21.0, 21.0, 21.0, 18.0, 18.0, 19.0, 21.0, 19.0, 19.0, 16.0, 19.0, 24.0, 27.0, 27.0, 27.0, 22.0, 24.0, 23.0, 25.0, 27.0, 28.0, 32.0, 31.0, 30.0, 31.0, 26.0, 21.0, 18.0, 23.0, 25.0, 28.0, 31.0, 31.0, 31.0, 31.0, 32.0, 33.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 32.0, 31.0, 31.0, 32.0, 32.0, 32.0, 34.0, 33.0, 28.0, 31.0, 31.0, 28.0, 29.0, 30.0, 32.0, 29.0, 31.0, 31.0, 31.0, 31.0, 30.0, 31.0, 32.0, 32.0, 32.0, 33.0, 31.0, 29.0, 28.0, 28.0, 30.0, 30.0, 34.0, 35.0, 35.0, 30.0, 30.0, 33.0, 34.0, 33.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 31.0, 33.0, 34.0, 34.0, 34.0, 35.0, 33.0, 31.0, 32.0, 32.0, 32.0, 34.0, 34.0, 33.0, 33.0, 34.0, 34.0, 34.0, 35.0, 36.0, 36.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 36.0, 37.0, 35.0, 34.0, 35.0, 34.0, 33.0, 32.0, 30.0, 30.0, 31.0, 28.0, 32.0, 34.0, 35.0, 36.0, 36.0, 34.0, 32.0, 33.0, 32.0, 34.0, 33.0, 33.0, 33.0, 29.0, 34.0, 35.0, 36.0, 35.0, 35.0, 35.0, 32.0, 33.0, 35.0, 35.0, 36.0, 35.0, 36.0, 36.0, 36.0, 35.0, 33.0, 33.0, 33.0, 32.0, 31.0, 32.0, 33.0, 33.0, 32.0, 32.0, 30.0, 36.0, 33.0, 31.0, 31.0, 33.0, 32.0, 33.0, 31.0, 29.0, 30.0, 28.0, 26.0, 28.0, 32.0, 31.0, 28.0, 34.0, 33.0, 33.0, 28.0, 25.0, 25.0, 24.0, 26.0, 29.0, 31.0, 31.0, 27.0, 27.0, 30.0, 30.0, 26.0, 27.0, 26.0, 27.0, 25.0, 26.0, 26.0, 26.0, 28.0, 31.0, 31.0, 27.0, 22.0, 24.0, 27.0, 29.0, 27.0, 25.0, 24.0, 27.0, 30.0, 29.0, 29.0, 27.0, 25.0, 27.0, 27.0, 26.0, 22.0, 23.0, 30.0, 25.0, 30.0, 31.0, 30.0, 27.0, 30.0, 23.0, 26.0, 28.0, 28.0, 24.0, 23.0, 20.0, 21.0, 22.0, 22.0, 19.0, 17.0, 19.0, 21.0, 22.0, 22.0, 21.0, 22.0, 24.0, 23.0, 23.0, 21.0, 11.0, 13.0, 11.0, 17.0, 14.0, 16.0, 18.0, 19.0, 23.0, 23.0, 20.0, 22.0, 26.0, 27.0, 27.0, 14.0, 12.0, 15.0, 19.0, 20.0, 21.0, 23.0, 20.0, 13.0, 11.0, 12.0, 16.0, 19.0, 21.0, 22.0, 22.0, 18.0, 18.0, 21.0, 22.0, 22.0, 23.0, 25.0, 23.0, 26.0, 25.0, 24.0, 20.0, 21.0, 23.0, 25.0, 27.0, 26.0, 25.0, 27.0, 27.0, 28.0, 28.0, 27.0, 21.0, 15.0, 19.0, 23.0, 25.0, 26.0, 28.0, 26.0, 24.0, 24.0, 25.0, 26.0, 26.0, 27.0, 29.0, 23.0, 24.0, 22.0, 16.0, 21.0, 25.0, 20.0, 20.0, 17.0, 21.0, 22.0, 23.0, 19.0, 24.0, 24.0, 26.0, 29.0, 25.0, 26.0, 28.0, 28.0, 29.0, 29.0, 29.0, 30.0, 18.0, 20.0, 18.0, 23.0, 28.0, 27.0, 28.0, 30.0, 29.0, 31.0, 28.0, 31.0, 31.0, 32.0, 23.0, 24.0, 30.0, 27.0, 22.0, 22.0, 26.0, 29.0, 30.0, 31.0, 31.0, 26.0, 23.0, 25.0, 27.0, 24.0, 25.0, 31.0, 31.0, 34.0, 27.0, 27.0, 24.0, 22.0, 22.0, 22.0, 32.0, 32.0, 32.0, 26.0, 31.0, 29.0, 30.0, 31.0, 34.0, 35.0, 34.0, 34.0, 34.0, 33.0, 33.0, 34.0, 35.0, 34.0, 33.0, 34.0, 34.0, 36.0, 35.0, 35.0, 31.0, 33.0, 35.0, 34.0, 35.0, 34.0, 34.0, 32.0, 30.0, 31.0, 33.0, 26.0, 30.0, 34.0, 32.0, 34.0, 33.0, 32.0, 32.0, 31.0, 32.0, 30.0, 33.0, 34.0, 34.0, 35.0, 35.0, 36.0, 35.0, 28.0, 29.0, 30.0, 32.0, 33.0, 35.0, 30.0, 32.0, 33.0, 34.0, 34.0, 33.0, 35.0, 34.0, 33.0, 32.0, 33.0, 35.0, 35.0, 35.0, 34.0, 35.0, 36.0, 34.0, 35.0, 34.0, 34.0, 30.0, 28.0, 27.0, 35.0, 37.0, 36.0, 36.0, 35.0, 37.0, 38.0, 36.0, 32.0, 33.0, 36.0, 34.0, 34.0, 32.0, 30.0, 32.0, 35.0, 32.0, 29.0, 31.0, 33.0, 34.0, 33.0, 31.0, 31.0, 34.0, 34.0, 31.0, 33.0, 34.0, 35.0, 35.0, 35.0, 34.0, 34.0, 35.0, 33.0, 33.0, 33.0, 34.0, 30.0, 31.0, 33.0, 34.0, 35.0, 35.0, 35.0, 35.0, 34.0, 36.0, 35.0, 36.0, 36.0, 36.0, 35.0, 34.0, 35.0, 34.0, 33.0, 35.0, 33.0, 35.0, 35.0, 32.0, 33.0, 34.0, 33.0, 35.0, 34.0, 35.0, 35.0, 34.0, 33.0, 34.0, 34.0, 34.0, 35.0, 34.0, 20.0, 26.0, 28.0, 29.0, 25.0, 25.0, 30.0, 24.0, 25.0, 24.0, 27.0, 30.0, 31.0, 20.0, 19.0, 18.0, 25.0, 25.0, 29.0, 29.0, 29.0, 29.0, 19.0, 25.0, 25.0, 25.0, 26.0, 28.0, 30.0, 31.0, 30.0, 19.0, 21.0, 23.0, 26.0, 24.0, 24.0, 25.0, 23.0, 25.0, 21.0, 24.0, 24.0, 28.0, 27.0, 17.0, 16.0, 21.0, 24.0, 25.0, 25.0, 25.0, 27.0, 22.0, 19.0, 21.0, 22.0, 22.0, 22.0, 23.0, 24.0, 26.0, 25.0, 25.0, 27.0, 26.0, 22.0, 24.0, 22.0, 26.0, 11.0, 20.0, 18.0, 16.0, 18.0, 23.0, 18.0, 19.0, 21.0, 13.0, 10.0, 13.0, 15.0, 19.0, 21.0, 23.0, 23.0, 25.0, 25.0, 25.0, 24.0, 22.0, 20.0, 18.0, 18.0, 17.0, 15.0, 17.0, 14.0, 19.0, 23.0, 16.0, 15.0, 20.0, 21.0, 20.0, 23.0, 19.0, 19.0, 19.0, 21.0, 23.0, 19.0, 15.0, 12.0, 11.0, 10.0, 10.0, 15.0, 13.0, 15.0, 15.0, 13.0, 13.0, 16.0, 22.0, 20.0, 13.0, 21.0, 21.0, 20.0, 16.0, 17.0, 14.0, 16.0, 19.0, 23.0, 25.0, 25.0, 14.0, 25.0, 26.0, 28.0, 27.0, 23.0, 23.0, 25.0, 25.0, 27.0, 27.0, 27.0, 27.0, 28.0, 30.0, 27.0, 27.0, 27.0, 29.0, 28.0, 28.0, 27.0, 16.0, 16.0, 24.0, 27.0, 22.0, 21.0, 21.0, 25.0, 29.0, 16.0, 15.0, 23.0, 26.0, 28.0, 29.0, 31.0, 31.0, 30.0, 31.0, 31.0, 30.0, 28.0, 30.0, 29.0, 24.0, 21.0, 19.0, 19.0, 22.0, 27.0, 30.0, 29.0, 29.0, 31.0, 32.0, 31.0, 31.0, 31.0, 30.0, 18.0, 23.0, 27.0, 29.0, 30.0, 30.0, 29.0, 25.0, 27.0, 26.0, 27.0, 25.0, 27.0, 26.0, 23.0, 22.0, 27.0, 29.0, 31.0, 30.0, 32.0, 28.0, 28.0, 27.0, 29.0, 32.0, 30.0, 32.0, 33.0, 33.0, 33.0, 33.0, 31.0, 32.0, 32.0, 32.0, 31.0, 29.0, 27.0, 30.0, 30.0, 29.0, 29.0, 31.0, 28.0, 27.0, 29.0, 31.0, 30.0, 29.0, 30.0, 32.0, 33.0, 33.0, 35.0, 35.0, 35.0, 35.0, 35.0, 35.0, 34.0, 32.0, 29.0, 30.0, 29.0, 30.0, 31.0, 31.0, 33.0, 34.0, 35.0, 35.0, 36.0, 36.0, 35.0, 36.0, 35.0, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.0, 38.0, 38.0, 38.0, 38.0, 38.0, 37.0, 36.0, 36.0, 36.0, 33.0, 30.0, 27.0, 33.0, 34.0, 34.0, 33.0, 29.0, 31.0, 31.0, 32.0, 34.0, 35.0, 35.0, 35.0, 33.0, 33.0, 33.0, 33.0, 34.0, 35.0, 36.0, 31.0, 32.0, 35.0, 35.0, 35.0, 33.0, 34.0, 31.0, 31.0, 32.0, 33.0, 34.0, 35.0, 32.0, 34.0, 34.0, 34.0, 34.0, 35.0, 36.0, 35.0, 35.0, 35.0, 35.0, 37.0, 35.0, 34.0, 31.0, 32.0, 32.0, 33.0, 34.0, 34.0, 33.0, 33.0, 33.0, 33.0, 32.0, 34.0, 34.0, 35.0, 33.0, 34.0, 31.0, 29.0, 30.0, 26.0, 27.0, 29.0, 30.0, 31.0, 31.0, 31.0, 29.0, 24.0, 25.0, 28.0, 32.0, 34.0, 34.0, 33.0, 29.0};
        double alpha = 0.5823572814934685;
        double beta = 0.029199755095447876;
        double gamma = 0.6496893056881466;

        HoltWintersModel hwm = HoltWinters.fit(data, 363, alpha, beta, gamma, false, true,
                HasSeasonalType.SeasonalType.ADDITIVE, null, null, null);

        System.out.println((int) hwm.forecast(1)[0]);
    }

然後就開始華麗麗的報錯的

Exception in thread "main" java.lang.NoClassDefFoundError: scala/Serializable
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at com.alibaba.alink.common.timeseries.TimeSeriesUtils.calcHoltWintersLBFGSB(TimeSeriesUtils.scala)
...
Caused by: java.lang.ClassNotFoundException: scala.Serializable
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	... 14 more

問題分析

java.lang.ClassNotFoundException: scala.Serializable

找不到 scala.Serializable 這個類?????

之前真的是可以用的,為什麼突然就不行了呢?(程式設計師最容易產生的疑惑)。。。。
真的是在執行中,突然冒出來的問題,雖然這種說法說出來自己都很難接受,這種報錯,也不會說跟資料有啥相關性,程式碼中也不存在一些分支,比如這些資料走這邊,另外的資料走另外一邊,之前只是一直沒有觸發,。。。。算了,也追究不清楚了。

找不到這個類,為啥會找不到這個類呢?

網上找,這個類,就是透過 <artifactId>scala-library</artifactId> 引進來的啊,也明明引進來了,咋回事???

兩眼一抹黑。毫無頭緒。

(1)包衝突?
(2)這個類是不是真的不存在?
找了一個類, 在import的地方寫上:import scala.Serializable;
image

誒?發現真的沒有?啥情況??????

這種問題要怎樣排查定位呢,真是讓人很是頭疼。