Like Share Discussion Bookmark Smile

J.J. Huang   2021-08-13   天堂私服   瀏覽次數:

天堂私服 | Eclipse 原始碼編譯與錯誤排除

編譯 ( Compiler || Build )

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

  • 開啟Eclipse
  • 選擇好Workspace,點擊Launch
  • 進入Eclipse主要視窗後,可以看到之前匯入的L1J-TW_3.80c專案。

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

  • 首先點擊Project取消勾選Build Automatically
  • 取消後,可以看到Build All的選項可以點擊,且快捷鍵為Ctrl + B
  • 請記住這個快捷鍵,後面將會一直用到。
  • 執行Build可以注意到IDE右下角會出現Building workspace(xx%)(只會出現一下),可以知道到底有沒有Build

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

錯誤 ( Error )

Build後,可能會發現L1J-TW_3.80c專案上有一個紅色X,這表示程式中有錯誤。
下方的Problems也可以看到一堆的錯誤。

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

  • 展開L1J-TW_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-TW_3.80c專案上右鍵點擊,點選Build PathConfigure Build Path...
  • 開啟了Properties for L1J-TW_3.80c視窗。
  • 點選Java Compiler→勾選Enable project specific settingsCompiler compliance level:選擇1.7Apply and Close

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

  • 設定完成後,在Build專案,使用快捷鍵Ctrl + B
  • 可見右下角會出現Building workspace(xx%)(只會出現一下)
  • 作者到這邊已經將所有錯誤都解決了。

其他常見問題

在上方作者非常幸運將天堂私服模擬器原始碼匯入成功,且編譯完成錯誤也排除完畢。
但是有很多人的環境和問題都不一樣,我這邊僅能列出我知道的幾個可能問題和排除方式提供給大家。

  • JDK 版本問題

    • 問題:使用的JDK版本過低或是過高。
    • 說明:對,太高的版本也會有問題,因為有些程式碼在JDK 1.8後將會有不支援或是程式碼不一樣的問題。
    • 解決:目前L1J-TW_3.80c可以確定的是JDK 1.7是沒有問題的。其他版本所支援的版本需要在確認對應的版本。
  • import 程式碼報錯,Libraries(Lib) 沒有匯入

    • 問題:部分程式碼在編譯後依舊錯誤情況,最好辨認的為import的程式碼報錯。
    • 說明:通常是因為沒有將相依的第三方套件指定給專案做使用。
    • 解決:將相依的Libraries(Lib)指定給專案做使用重新Build過即可。
      • L1J-TW_3.80c專案上右鍵點擊,點選Build PathConfigure Build Path...
      • 點選Java Build PathLibrariesAdd JARs...
      • 開啟後通常在專案開發目錄下會有一個lib,裡面放置專案會使用的第三方套件。
      • 全選這些.jar檔,並點擊OK
      • 最後Apply and Close,並且重新Build

    • 額外說明:為什麼會有這些lib
      • 舉例來說這個專案需要連線到資料庫,已經有寫好的連線程式,我們可以拿來做設定與使用。
  • 程式碼裡面都是亂碼

    • 問題:開啟程式碼,部分的中文或是日文都是亂碼。
    • 說明:因為文件預設編輯的編碼設定錯誤了。
    • 解決:將專案的編碼設定為正確的編碼。
      • L1J-TW_3.80c專案上右鍵點擊,點選Build PathConfigure Build Path...
      • 點選ResourceText file encoding→選擇Other→選擇UTF-8
      • 最後Apply and Close,即可看到程式碼正常顯示。

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

結語

相信這篇應該已經解決多數新手問題,希望可以透過這篇讓新手們少採點坑,且多少吸收一點點點點的技術、知識、觀念。
這邊另外要知道注意的點就是Build,常常有新手在修正後忘記重新Build,就會覺得問題沒有被解決而到處尋求協助和解答。
最後建議回顧一下首章天堂私服 | 天堂私服架設教學,了解其章結目錄,此處會不定時更新。

免責聲明

  • 本部落格文章中皆不提供任何所謂的遊戲「主程式」、「模擬器」、「登入器」…等等相關程式的下載點。
  • 本部落格文章中所見之遊戲主程式和服務器端程序均來自網路發佈,版本歸原作者所有
  • 本部落格文章為研究SQL資料庫與修改JAVA語法使用,非商業用途,亦無做營運事實等任何一切商業行為
  • 本部落格文章內容是為研究學習設計思想和原理為目的,絕沒有故意侵權或惡意抄襲、篡改其他遊戲內容