雖然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,即可看到程式碼正常顯示。
註:所以編碼是什麼?可以上網搜尋一下關鍵字,這邊就不特別提及,只需要稍微理解即可。