詳解myeclipse和maven的clean和build
MyEclipse是一個被廣為使用的軟體,但是很多人用了很久,對它如何編譯,執行一個java工程卻沒有一個清楚的認識。比如,
- clean和build到底有什麼區別?
- 直接run主類之前用不用clean一下?
- 直接clean和maven clean是不是一樣的?
- 直接build和maven build,結果相同嗎?
另外,在遇到最棘手的問題:
錯誤: 找不到或無法載入主類
的時候,很容易陷入懵逼狀態。下面我結合我的一些實驗,簡單介紹下myeclipse的,clean,build,run,以及他們和maven clean,maven build的區別。
一.myeclipse的clean,build和run
首先,我們使用一個普通的maven工程作為例子。
- clean。作用很簡單,清空輸出目錄下的所有檔案,每一個source folder都有一個自己的輸出目錄,也就是output
folder。這個目錄可以在build path裡進行設定,一個標準maven工程中,src/main/java通常的輸出目錄是
工程名/target/classes
- build。build的作用則是編譯,實際上就是把source fold下的所有檔案轉移到相應的output folder, .java檔案先編譯再轉移,其他檔案直接轉移。在maven工程中,這個build其實相當於一次myeclipse自身的編譯,最後再利用maven提取一下資原始檔。
- 其實兩者區別很明顯了,很多時候我們分不清他和clean的區別,是因為myeclipse提供了很多便利的機制。clean的提示框如下:
看到紅框了嗎,如果打勾,表示clean完畢之後立刻進行一次build,那看起來就和build沒什麼區別了。如果你把勾去掉,clean後去檢視輸出目錄,就會發現輸出目錄被清空了。這裡就不進行截圖了。
4.run。簡單來說就是找一個main方法,直接右鍵,run java application,相信大家都用過。這個run,實際上就是去
工程名/target/classes
這個目錄下去找class檔案執行而已(如果不是maven工程,可能去工程名/classes下找),那麼沒有檔案怎麼辦呢?如果你剛剛完成了clean,但是沒有build,那麼它會自動build一次。此外都會直接去找檔案執行,如果找不到咋辦?
錯誤: 找不到或無法載入主類
二.maven的clean和build
- maven clean
預設情況下直接刪除target資料夾。簡單直接。 - maven build
按照maven規則進行編譯,和myeclipse無關,也就是說,不管你是不是設定了source folder,maven都按照他那一套進行編譯,具體規則大家可以找maven文章深入學習。 - maven的一些規則。maven的預設輸出資料夾也是
工程名/target/classes
,無論原始碼還是資原始檔,根目錄都是這個資料夾,打包其實就相當於把這個資料夾打包而已。
三.總結
無論如何,build之前都應該clean,因為如果直接build,同名檔案直接覆蓋,非同名檔案會保留,這有可能給程式帶來未知的問題。如果myeclipse的輸出資料夾設定合理,那麼和maven build可能也不會出現什麼不同。但是,在使用maven的情況下,直接使用myeclipse內建的build功能仍然可能會和maven build產生不完全一致的效果,比如maven可能會忽視src/main/java資料夾內的資原始檔,而myeclipse會保留。
嚴格來說,myeclipse內建的編譯功能,更多的是提供程式碼提示和檢查功能,即使你完全不使用它,maven也可以正確編譯。(當然這樣你就享受不到程式碼提示之類的的了)。
但可以確定的是,使用maven clean build總是可以生成最精確的結果,所以推薦先maven clean build後再執行程式。
相關推薦
詳解myeclipse和maven的clean和build
MyEclipse是一個被廣為使用的軟體,但是很多人用了很久,對它如何編譯,執行一個java工程卻沒有一個清楚的認識。比如, clean和build到底有什麼區別? 直接run主類之前用不用clean一下? 直接clean和maven clean是不是一樣的
POI操作Excel詳解,讀取xls和xlsx格式的文件
shee xss split 類型 後綴 .sh lan xls lin package org.ian.webutil; import java.io.File; import java.io.FileInputStream; import java.io.FileN
跨域問題相關知識詳解(原生js和jquery兩種方法實現jsonp跨域)
syn con 加載 developer 兩種方法 ray exe 編寫 分組 1、同源策略 同源策略(Same origin policy),它是由Netscape提出的一個著名的安全策略。同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽
(轉)Java 詳解 JVM 工作原理和流程
移植 獲得 代碼 適配 調用 tac 階段 main方法 等待 作為一名Java使用者,掌握JVM的體系結構也是必須的。說起Java,人們首先想到的是Java編程語言,然而事實上,Java是一種技術,它由四方面組成:Java編程語言、Java類文件格式、Java虛擬機和Ja
Java 詳解 JVM 工作原理和流程
str literal 狀態 應用 流程 href ctu 局部變量 自定義 作為一名Java使用者,掌握JVM的體系結構也是必須的。說起Java,人們首先想到的是Java編程語言,然而事實上,Java是一種技術,它由四方面組成:Java編程語言、Java類文件格式、Jav
詳解MySQL基準測試和sysbench工具
threads 組件 程序 原因 str 前言 全面 無法連接 不同 前言 作為一名後臺開發,對數據庫進行基準測試,以掌握數據庫的性能情況是非常必要的。本文介紹了MySQL基準測試的基本概念,以及使用sysbench對MySQL進行基準測試的詳細方法。 文章有疏漏之處,歡迎
詳解MySQL基準測試和sysbench工具(轉)
lua 增刪 後臺 simple ads 執行時間 bench 進行 響應 前言 作為一名後臺開發,對數據庫進行基準測試,以掌握數據庫的性能情況是非常必要的。本文介紹了MySQL基準測試的基本概念,以及使用sysbench對MySQL進行基準測試的詳細方法。 文章有疏漏
詳解 最大子段和
最大 負數 nbsp 端點 關於 一段 描述 計數器 曾經 題目名稱:最大子段和 題目描述:給出一段序列,選出其中連續且非空的一段使得這段和最大。 輸入格式: 第一行是一個正整數N,表示了序列的長度。 第2行包含N個絕對值不大於10000的整數A[i],描述了這段序列。
java類型轉換詳解(自動轉換和強制轉換)
代碼 oid 高精 log 相加 println 類型轉換詳解 範圍 void 自動轉換 class Hello { public static void main(String[] args) { //自動轉換 int a = 5; byte b = 6
datetime 模塊詳解 -- 基本的日期和時間類型
日歷 cell max 5-0 .cn 賦值 RR 意義 struct 轉自:https://www.cnblogs.com/fclbky/articles/4098204.html datetime 模塊提供了各種類用於操作日期和時間,該模塊側重於高效率的格式化輸出在 P
詳解如何在Centos6和Centos7兩個版本上,執行Cobbler無人值守安裝!
信息 cgroup 內容 manager 外網 oar 關聯 done 足夠 Cobbler介紹: Cobbler是一個Linux服務器快速網絡安裝的服務,而且在經過調整也可以支持網絡安裝windows。該工具使用python開發,小巧輕便(才15k行python代碼),可
syslog、日誌服務器安裝、卸載詳解、如何安裝和卸載EventLog Analyzer
技術 src 如何 RoCE analyze sys ESS watermark 詳解 syslog、日誌服務器安裝、卸載詳解、如何安裝和卸載EventLog Analyzer
詳解1U服務器和2U服務器哪個更好?
體積 cto 發揮 使用 服務器 承擔 個數 最大 lar 機架式服務器的外形看來不像計算機,而像交換機,有1U(1U=1.75英寸)、2U、4U等規格。 在很多企業在選擇機架式服務器的時候都比較糾結的是,到底是選1U還是2U好呢? 現在我們就來詳細了解一下1U機架式服務
基於接口回調詳解JUC中Callable和FutureTask實現原理
cnblogs blog 異步編程 但是 迷糊 對象 extend href 增加 Callable接口和FutureTask實現類,是JUC(Java Util Concurrent)包中很重要的兩個技術實現,它們使獲取多線程運行結果成為可能。它們底層的實現,就是基於接口
一篇文章詳解大資料技術和應用場景
什麼是大資料 說起大資料,估計大家都覺得只聽過概念,但是具體是什麼東西,怎麼定義,沒有一個標準的東西,因為在我們的印象中好像很多公司都叫大資料公司,業務形態則有幾百種,感覺不是很好理解,所以我建議還是從字面上來理解大資料,在維克托邁爾-舍恩伯格及肯尼斯庫克耶編寫的《大資料時代》提到了大資料的4個特徵:
SELECT INTO 和 INSERT INTO SELECT 兩種表複製語句詳解(SQL資料庫和Oracle資料庫的區別)
https://www.cnblogs.com/mq0036/p/4155136.html 我們經常會遇到需要表複製的情況,如將一個table1的資料的部分欄位複製到table2中,或者將整個table1複製到table2中,這時候我們就要使用SELECT INTO 和 INSER
TCP/IP詳解--ICMP 控制報文和差錯報文 Tracerouter 命令的過程
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
詳解MySQL基準測試和sysbench工具-轉載-(作者:程式設計迷思)
轉載地址:https://www.cnblogs.com/kismetv/archive/2017/09/30/7615738.html 參考:https://blog.csdn.net/oahz4699092zhao/article/details/53332105 一、基準測試簡介
#圖文詳解:從實際和理論出發,帶你瞭解Java中的多執行緒
這裡並沒有講什麼新東西,只是把多執行緒一些知識來個總結。大家懂得可以複習複習,還有些童鞋對多執行緒朦朧的可以拿這個做為入門~ 舉個栗子說明啥是多執行緒:玩遊戲,前面一堆怪,每個怪都是一個執行緒,你射了一槍,子彈飛出去了,這顆子彈也是一個執行緒。你開啟你的程序管理,看到你遊戲的後臺程序,這就是程序
詳解Android SDK 目錄和作用
Android SDK 目錄和作用的分析詳解 1、add-ons這裡面儲存著附加庫,比如GoogleMaps,當然你如果安裝了OphoneSDK,這裡也會有一些類庫在裡面。 2、docs這裡面是Android SDKAPI參考文件,所有的API都可以在這裡查到。 3、market_lic