天堂私服 | Eclipse 原始碼編譯與錯誤排除
編譯 ( Compiler || Build )
雖然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
,即可看到程式碼正常顯示。註:所以編碼是什麼?可以上網搜尋一下關鍵字,這邊就不特別提及,只需要稍微理解即可。
- 於
- 問題:開啟程式碼,部分的中文或是日文都是亂碼。
結語
相信這篇應該已經解決多數新手問題,希望可以透過這篇讓新手們少採點坑,且多少吸收一點點點點的技術、知識、觀念。
這邊另外要知道注意的點就是Build
,常常有新手在修正後忘記重新Build
,就會覺得問題沒有被解決而到處尋求協助和解答。
最後建議回顧一下首章天堂私服 | 天堂私服架設教學,了解其章節目錄。
免責聲明
- 本部落格文章中皆不提供任何所謂的遊戲「主程式」、「模擬器」、「登入器」…等等相關程式的下載點。
- 本部落格文章中所見之遊戲主程式和服務器端程序均來自網路發佈,版本歸原作者所有。
- 本部落格文章為研究SQL資料庫與修改JAVA語法使用,並非商業用途,亦無做營運事實等任何一切商業行為。
- 本部落格文章內容是為研究學習設計思想和原理為目的,絕沒有故意侵權或惡意抄襲、篡改其他遊戲內容!