我有一個war從遠程服務器下載的編譯檔案。我可以在本地運行應用程式。問題是我沒有源代碼,所有的java檔案都已經是編譯.class檔案了。
現在我想向現有專案添加一些新功能。該應用程式很舊,它使用web.xml檔案來宣告 servlet。例如:
<servlet>
<servlet-name>ServletOne</servlet-name>
<servlet-class>path.to.ServletOne</servlet-class>
</servlet>
<servlet>
<servlet-name>ServletTwo</servlet-name>
<servlet-class>path.to.ServletTwo</servlet-class>
</servlet>
...
我試圖在web.xml檔案中添加一個新的 servlet 路徑,如:
<servlet>
<servlet-name>ServletOne</servlet-name>
<servlet-class>path.to.ServletOne</servlet-class>
</servlet>
<servlet>
<servlet-name>ServletTwo</servlet-name>
<servlet-class>path.to.ServletTwo</servlet-class>
</servlet>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>path.to.MyServlet</servlet-class>
</servlet>
...
然后我在下面添加了一個新.java檔案,path.to.MyServlet并將另一個(編譯的)servlet 中的所有代碼復制粘貼到我的新 servlet 類中(我可以看到.class檔案的內容,因為我正在使用的 IDE 中有這樣的功能,但是那些類處于只讀模式。但是我無法編譯MyServlet檔案(無法轉換MyServlet.java為MyServlet.class. 因為其余的類已經編譯(.class格式,不是.java)并且所有import代碼都不起作用(MyServlet看不到其他檔案)。
這是我嘗試時遇到的錯誤之一javac MyServlet.java:
error: package javax.servlet.http does not exist
import javax.servlet.http.HttpServlet;
當然我可以使用類似的東西javac -cp path/to/tomcat/servlet-api.jar MyServlet.java,但是如果我需要匯入專案中已經存在的類怎么辦?它會變得有點亂,我想......
在沒有源代碼的情況下,最有機的持續開發方式是什么?
我在想的是構建一個單獨的 Spring Boot 應用程式,但是它將在不同的埠中并且需要進行一次身份驗證(意思是,當他/她在應用程式之間切換時,我不能要求用戶再次登錄) .
我正在使用 java-8 并且應用程式部署在 tomcat-7 上(如果有幫助的話)
uj5u.com熱心網友回復:
如果您計劃進行更多更改,并且在您的情況下確實允許反編譯類,我認為最簡單的解決方案是創建一個新專案,反編譯所有現有類,然后將它們添加到新專案中。
如果是一次性更改,您可以解壓war檔案,將解壓后的WEB-INF/classes目錄添加到您正在編譯的新檔案的類路徑中(例如,javac -cp path/to/tomcat/servlet-api.jar:path/to/unzipped-warfile/WEB-INF/classes MyServlet.java),然后將新編譯的類添加到WEB-INF/classes并重新打包到war檔案中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/385777.html
