背景:
程式中要使用 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;
誒?發現真的沒有?啥情況??????
這種問題要怎樣排查定位呢,真是讓人很是頭疼。