eclipse import的java檔要如何取得.class

今天早上參與了舊系統的考古工作

系統更換DB之後,突然就掛掉了。

後來查明原因是mySql舊版本對語法並不嚴謹,查詢字串時可以不給 " 一樣可以通過。

前人就這樣直接上正式環境,在半夜更換DB時就開始查詢失敗。

最後請DBA調出log才知道問題在哪。


但知道問題後才發現還有更多的問題

當系統太過老舊,連source code都已經失傳時。

該如何替換新的檔案呢?

內部的SVN上有程式,但已經無法確認是否與production是否相同。

此時就只能把war下載下來並開啟壓縮檔案抽換程式。


確認好可以抽換檔案後,又要來確認程式是否可以build

一開始想說把source code直接javac 編譯後就好

後來發現會產生

error: package org.apache.commons.logging does not exist
import org.apache.commons.logging.LogFactory; 

這種奇怪的錯誤

一開始以為是javac 指定的資料夾位置不對,後來還是找不到apache.commons的jar

接著決定轉向改由eclipse去取得編譯好的.class


因SVN的source code實在太過老舊,未使用maven或gradle。

只能從new project開始,先填project 名稱、選擇jre版本,接著點選[Finish]

接著就會自動建好project,接著要匯入外部的java檔案。

在project上點選滑鼠右鍵,選擇[import…]

接著選擇[File System],之後點選[Next >]

接著選[Browse…],選取要匯入的資料夾。

選好後就會在左側的方框內看到,把要匯入的資料夾打勾並點選[Finish]


完成以上步驟後,應該就能在Package Explorer內看到剛剛匯入的檔案。如下圖

不過這樣還是有點問題,匯入的檔案不在src內

所以不會被eclipse編譯

從上方menu選擇Window>Show View>Navigator(Deprecated)

點選後會出現Navigator,可以看到bin資料夾內是沒有檔案的

若是把匯入的檔案移動到src內(如下圖),就能看到bin資料夾有被eclipse編譯好的檔案。


最後只要取得bin內的.class檔案,再開啟war檔抽換編譯好的新檔案並重新佈署。


若是要變更.class的default位置

可以點選project右鍵>Build Path>Configure Build Path…

選擇後,更改下方的Default output folder:欄位的位置並Apply即可。

發表留言