您当前位置: 天堂123 > 天堂架設 > 天堂模擬器原始碼編譯與錯誤排除

天堂模擬器原始碼編譯與錯誤排除

2022/6/19

雖然Eclipse有提供也預設是自動 Build Project,但我個人是喜歡手動Build Project的。


開啟Eclipse。

選擇好Workspace,點擊Launch。


進入Eclipse主要視窗後,可以看到之前匯入的L1J-3.80c專案。

註:如果不知道該專案為何而來,可以參考天堂私服 | Eclipse 匯入天堂私服原始碼。



首先點擊Project→取消勾選Build Automatically。


取消後,可以看到Build All的選項可以點擊,且快捷鍵為Ctrl + B。

請記住這個快捷鍵,後面將會一直用到。


執行Build可以注意到IDE右下角會出現Building workspace(xx%)(只會出現一下),可以知道到底有沒有Build。

為何要Build? 當你修改完程式儲存後,程式在還沒被編譯的時候,並不會知道是否有語法上或是程式上的錯誤;所以透過IDE的Build可以立刻知道並提示錯誤,有的還會提示該如何解決。


錯誤 ( Error )

在Build後,可能會發現L1J-3.80c專案上有一個紅色X,這表示程式中有錯誤。

下方的Problems也可以看到一堆的錯誤。


註:至於為何要特別強調可能,是因為你匯入的專案不一定都是這樣不順利有錯誤。



展開L1J-3.80c,發現src上也有錯誤。

接續開啟/src/l1j/server/console/ConsoleLogFormatter.java

將滑鼠移動到IDE提示的錯誤行上(滑鼠稍微放置一下會彈出提示)

提示為Syntax error, annotations are only available if source level is 1.5 or greater,說明需要JDK 1.5以上的版本才支援該語法。


問題:前面的文章教學我們這邊是安裝JDK 1.7版本,而且也有調整預設的Compiler的版本為JDK 1.7了,為何這邊會說版本不正確?

解答:這是因為每一個Project可以獨立設定要使用的JDK版本來做編譯。


於L1J-3.80c專案上右鍵點擊,點選Build Path→Configure Build Path...。

開啟了Properties for L1J-3.80c視窗。

點選Java Compiler→勾選Enable project specific settings→Compiler compliance level:選擇1.7→Apply and Close。


以上動作是在針對該專案做特別的設定,Compiler compliance level:1.7。


設定完成後,在Build專案,使用快捷鍵Ctrl + B。

可見右下角會出現Building workspace(xx%)(只會出現一下)


作者到這邊已經將所有錯誤都解決了。


其他常見問題

在上方作者非常幸運將天堂私服模擬器原始碼匯入成功,且編譯完成錯誤也排除完畢。

但是有很多人的環境和問題都不一樣,我這邊僅能列出我知道的幾個可能問題和排除方式提供給大家。


JDK 版本問題


問題:使用的JDK版本過低或是過高。

說明:對,太高的版本也會有問題,因為有些程式碼在JDK 1.8後將會有不支援或是程式碼不一樣的問題。

解決:目前L1J-3.80c可以確定的是JDK 1.7是沒有問題的。其他版本所支援的版本需要在確認對應的版本。

import 程式碼報錯,Libraries(Lib) 沒有匯入


問題:部分程式碼在編譯後依舊錯誤情況,最好辨認的為import的程式碼報錯。


說明:通常是因為沒有將相依的第三方套件指定給專案做使用。


解決:將相依的Libraries(Lib)指定給專案做使用重新Build過即可。

於L1J-3.80c專案上右鍵點擊,點選Build Path→Configure Build Path...。

點選Java Build Path→Libraries→Add JARs...

開啟後通常在專案開發目錄下會有一個lib,裡面放置專案會使用的第三方套件。

全選這些.jar檔,並點擊OK。

最後Apply and Close,並且重新Build。



額外說明:為什麼會有這些lib?

舉例來說這個專案需要連線到資料庫,已經有寫好的連線程式,我們可以拿來做設定與使用。

程式碼裡面都是亂碼


問題:開啟程式碼,部分的中文或是日文都是亂碼。


說明:因為文件預設編輯的編碼設定錯誤了。

解決:將專案的編碼設定為正確的編碼。

於L1J-3.80c專案上右鍵點擊,點選Build Path→Configure Build Path...。

點選Resource→Text file encoding→選擇Other→選擇UTF-8。

最後Apply and Close,即可看到程式碼正常顯示。



註:所以編碼是什麼?可以上網搜尋一下關鍵字,這邊就不特別提及,只需要稍微理解即可。