1. 程式人生 > >Java學習筆記-如何配置Sublime Text來編譯Java及import路徑包

Java學習筆記-如何配置Sublime Text來編譯Java及import路徑包

1.關於Sublime Text

筆者使用的是Sublime Text 3,作為一個一款輕量級的文字編輯器, 整體來說還是很不錯的. 不過有些配置還是相當坑的, 至少配置執行Java還是有點坑的, 筆者花了大半個下午才折騰明白, 今天就先和大家分享一下配置Sublime Text的辛酸史.

2.在Sublime自帶的控制檯列印執行結果

在上一篇文章, 第一個Java程式, 已經提到了執行javac HelloWorld.java, 生成HelloWorld.class檔案後, 執行java HelloWorld, 然後在終端上成功執行了第一個Java程式.

接下來要描述的就是在Sublime自帶的控制檯執行Java程式並列印執行結果.

首先開啟Sublime, 按組合鍵cmd+shift+p, 彈出搜尋框, 輸入並依次選中

PackageResourceViewer:Open Resource
Java
JavaC.sublime-build

這時候會開啟一個JavaC.sublime-bulid 的JSON文字檔案, 如下

{
    "shell_cmd": "javac \"$file\"",
    "shell":true,
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "selector": "source.java"
}

這時候只需要更改這個檔案的”shell_cmd”的value, 更改後如下

{
    "shell_cmd": "javac \"$file\" && java \"$file_base_name\"",
    "shell":true,
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "selector": "source.java"
}

cmd+s儲存, 關閉就可以了, 接下來就可以用Sublime開啟之前的HelloWorld.java檔案, cmd+b, 選擇JavaC編譯即可. 這裡簡單說一下, cmd+b是編譯, cmd+shift+b是執行.

3.Import一個包或者class

原本這一篇文章是準備寫一下關於類和物件的一些知識, 結果寫了幾個類, 然後準備在別的類引用的時候, 發現根本找不到包名和類名, 然後開始了各種折騰, 各種查詢, 答案琳琅滿目, 大部分都是解決如第二條描述的問題.

而我遇到的問題是找不到包名和類名, 在這裡把自己查了大量資料及最後摸索實驗結果給大家分享一下這個解決方案.

首先進入根目錄下

cd ~
cd /etc

然後編輯這個, 上一篇也提到了這個操作

sudo vi profile

開啟這個配置檔案

if [ -x /usr/libexec/path_helper ]; then
        eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
        [ -r /etc/bashrc ] && . /etc/bashrc
fi


JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home"
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH:

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

下邊這一段JAVA_HOME到後邊結束, 是之前配置JDK時新增的內容. 現在要做的就是在這裡加入你的工程目錄的路徑.

export JAVA_CLASS_YOURPATH=/你的工程檔案路徑
例如
export JAVA_CLASS_YOURPATH=/users/zedmao/Desktop/myJava/

然後把 JAVA_CLASS_YOURTPATH 新增到CLASSPATH, 也就是在結尾加上 :$JAVA_CLASS_YOURPATH

 export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH:$JAVA_CLASS_YOURPATH

最後更改後的這個檔案為

if [ -x /usr/libexec/path_helper ]; then
        eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
        [ -r /etc/bashrc ] && . /etc/bashrc
fi


JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home"

export JAVA_CLASS_YOURPATH=/users/zedmao/Desktop/ZedJava/

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH:$JAVA_CLASS_ZED

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

這個檔案是readonly的, 需要esc -> :wq!強制儲存退出.
執行這個配置檔案

source profile

好了, 現在你在YOURPATH路徑下的各個類之間就可以相互引用了, 下面會舉一個簡單的小例子

4.類之間的引用

好了, 假裝你們已經看懂了這些, 我的工作目錄假設為

/users/zedmao/Desktop/ZedJava

我現在在這個資料夾下邊建立一個子資料夾 JavaObject, 方便下一篇給大家簡單的講講物件和類的理解.

順便科普一下如何用Sublime開啟一個工程, 很簡單, 直接把ZedJava資料夾拖到Sublime快捷方式上就能打開了, 或者右鍵選擇開啟方式->Sublime.

開啟後的工程應該是這樣

簡單的建立一個JavaObject.java檔案, 寫一個main函式, 並匯入Person這個類.

import JavaObject.Person的意思可以理解為

JAVA_CLASS_YOURPATH/JavaObject/Person
/*就是一個路徑*/
//等價於
/users/zedmao/Desktop/ZedJava/JavaObject/Person
import JavaObject.Person;

public class JavaObject{
    public static void main(String[] args) {
        Person p=new Person("lemon");
    }
}

然後在建立一個Person.java的檔案, 寫一個簡單的構建函式, 在構建函式中列印名字.

package JavaObject;

public class Person {
    String _name;
    public Person (String name){
        _name=name;
        System.out.println(_name);
    }
}

這個package JavaObject的意思是你的這個Person的類在JavaObject資料夾下.

好了, 來到JavaObject.java檔案下, cmd+b執行一下, 是不是和上圖一樣, 在Person的構建函式中打印出了這個名字?

5. 小結

整體來說, Sublime這個工具畢竟是一個輕量版的編輯器, 很多東西並沒有那麼方便, 不過也讓你在折騰的過程中, 對Java的理解更加深入一點, 不過對初學者可能就太不友好了. 所以筆者就自身遇到的問題給大家分享一下解決方案, 希望大家能夠開(du)心(dong)編(huo)碼(zhe).