因此,我對Java,特別是Eclipse相當陌生,所以請原諒我的無知。我從一臺服務器上取了一個項目並將它複製到本地機器上。當我打開工作空間時,由於無法找到罐子,我有很多錯誤。這是有道理的,因爲我沒有與從我複製的服務器相同的目錄結構。因此,如果我將同一個外部jar複製到我的機器並將它編譯成jar並將其複製回服務器,它是否可以工作?或者它會失敗,因爲現在外部的罐子在一個不同的地方,而不是它所期待的?瞭解Eclipse中的外部罐區
另外,在路上我應該把外部瓶子放到普通的罐子裏以避免這個問題?
因此,我對Java,特別是Eclipse相當陌生,所以請原諒我的無知。我從一臺服務器上取了一個項目並將它複製到本地機器上。當我打開工作空間時,由於無法找到罐子,我有很多錯誤。這是有道理的,因爲我沒有與從我複製的服務器相同的目錄結構。因此,如果我將同一個外部jar複製到我的機器並將它編譯成jar並將其複製回服務器,它是否可以工作?或者它會失敗,因爲現在外部的罐子在一個不同的地方,而不是它所期待的?瞭解Eclipse中的外部罐區
另外,在路上我應該把外部瓶子放到普通的罐子裏以避免這個問題?
你應該沒問題。 Java使用所謂的類路徑來定位依賴關係。類路徑在開發機器上可能是不同的,但只要所有的依賴關係在生產環境中的類路徑上,一切都應該起作用。
爲了避免目錄結構同步的問題,最常用的方法是使用Maven - 它會管理你的所有依賴(但你必須管理pom.xml - Maven的項目描述符)。有點笨拙的方法是在項目中擁有依賴關係,但是最終可能會有許多項目必須包含相同的jar包,然後會出現版本衝突等問題。
對於小型項目,您可以自行管理依賴關係,但是較大的項目需要通過策略進行更多思考(如Maven)。
關於可執行文件夾,請確保< jarfile>:\ META-INF \ MANIFEST.MF中的Class-Path條目是正確的,例如,在參考其他罐子的地方,那些罐子將在生產中出現在那裏。例如,假設我們有ourjar.jar
並認爲這是從它的MANIFEST.MF一個片段:
Class-Path: lib/myteamjar.jar
那麼這將是預計將有以下目錄結構是否到位:
lib/myteamjar.jar
ourjar.jar
沒有,外部罐子的位置不重要。你想要做的是把外部的瓶子放在你的類路徑中。你怎麼做取決於你如何運行你的java代碼。如果使用命令java
從CLI運行它,它將類路徑作爲參數。如果你想讓你的代碼在Eclipse中構建/運行,你需要右鍵點擊你的項目,選擇「Build Path」>「Configure Build Path ...」。使用「Add JARs ...」按鈕來添加那些是你已經打開的一個項目的一部分和「添加外部JAR ...」來添加駐留在項目之外的jar。有關類路徑的更多詳細信息,請參閱您的工具的具體文檔。
我不會推薦Maven給那些對Java和Eclipse相當陌生的人。我也會忘記Eclipse。
您有一個包裝和CLASSPATH問題。專注於此。
你在說什麼類型的項目?您得到的答案將取決於您創建的應用程序類型。它是一個可執行的JAR嗎?然後,正確的做法是將所有內容打包到一個ZIP文件中,該文件與JAR清單中的CLASSPATH所預期的完全一致。
如果它是一個Web應用程序,那麼正確的是一個WAR文件,在您的應用程序需要的所有JAR文件在WEB-INF/lib目錄中。
如果你正確包裝的東西,你應該結束了一個包裝,所有的東西都擺在正確的位置。您應該能夠將其部署到服務器並使其工作。
因此,經過更多的研究,看起來他們正在使用包含外部JAR的用戶庫。如果可以,我可以更改用戶庫的Jars指向我的本地副本的路徑,然後我能夠將我的可執行JAR複製回服務器而無需更改其他任何東西?感謝所有的答覆。 – tacotime