---
# System prepended metadata

title: 建立java開發環境-vim篇
tags: [java, vim]

---

# 建立java開發環境-vim篇

## 下載java開發工具
安裝開發程式套件JDK(java development kit)和執行環境JRE(java runtime environement)
```bash!
sudo apt-get install default-jre default-jdk
```
## 安裝autocomplete套件(javacomplete2)
在$HOME/.vimrc裡面安裝套件，加入以下內容:
```bash=
Plugin 'artur-shaik/vim-javacomplete2'
```
安裝它 **:PluginInstall**
之後在$HOME/.vim/plugin/autocmd.vim裡加入
```bash=
autocmd FileType java setlocal omnifunc=javacomplete#Complete
```
## 使用clang-format在vim終將程式做排版
在vim編輯程式時內容時，內容是處於buffer的狀態，需使用**clang-format**將設定**autoread**參數才能使用，設定步驟如下:
1. 需先確認是否有下載clang-format
```bash=
sudo apt-get install clang-format
```
2. 在vim一般模式下設定autoread在vim一般模式下設定autoread
```bash=
:set autoread
```
3. 在將buffer內容儲存完之後使用clang-format命令
```bash=
:w
:!clang-format -style=google -i %
``` 
4. 如果確認上述1-3步驟是可行的話，將上述的命令加入自動命令的vim設定文件(HOME/vim/plugin/autocmd.vim)中讓其在每次離開insert mode的時候可以儲存且將程式格式排版
```bash=$HOME/vim/plugin/autocmd.vim
autocmd InsertLeave *.java write
autocmd InsertLeave *.java :!clang-format -i % -style=google
autocmd FileType java :set autoread
```
## 執行java程式

### 方法一:直接執行
* 好處: 在開發初期不必思考如何將程式移植到其他平台
* 壞處: 在使用編譯和執行時，參數需包含classes的放置位置

#### 作法:
寫完程式後需要使用下列兩隻程式編譯出class和使用直譯器執行它
1. java（用於編譯出class）
2. java (用於執行程式)

在寫完程式後可用**javac**加入以下參數產出class檔
```bash
javac -sourcepath src(放置原始碼的資料夾位置) -cp classes -d classes(classes為放置輸出的classes檔所放置的目錄名稱) src/cc/openhome/hello.java(指定要使用的Main函式存放的java檔案)
```
之後用**java**和上述產生的classes目錄執行程式
```bash!
java -cp classes cc.openhome.hello
```
### 方法二:包成jar檔案格式執行
* 好處: 不必思考如何將程式移植到其他平台，僅需注意jre是否被正確執行
#### 作法:
在使用方法一確定程式功能後可使用以以下兩支程式打包並且執行它
1. jar（用於編譯出jar檔案）
2. java (用於執行程式)
```bash!
#需建立一個檔案指定Main Class的位置
echo "Main-Class: cc.openhome.hello(hello.java為Main Class所在的地方)"> myManifest
#製作jar檔案
jar cvfm  hello.jar myManifest -C classes/(由方法一產生的class path) .
```
之後可將jar在有執行jre的平台上執行,執行命令如下
```bash!
java -jar hello.jar(填入自己生成的jar檔)
```
    
###### tags: `vim` `java`