Mac下 javac java 進行編譯和運行含有包路徑及引入jar包的類


近兩天因為剛入職,屬於熟悉環境的階段,研究了下算法(第四版),當不使用IDE工具直接使用終端進行javac 編譯帶有包的類,然后使用java 會出現如下錯誤提示:

使用谷歌搜索了很久,終於找到解決的辦法,作記錄一下,免得到時候會忘

因為該問題的出現時因為BinarySearch.java類中存在包路徑,該文件我是使用eclipse,放到workspace中的.

 
         

  package com.sort;

public class BinarySearch {
    
    public static int rank(int key ,int[] a){
        return rank(key,a,0,a.length-1);
        
    }
    
    public static int rank(int key ,int[] a,int lo,int hi){
        //如果key存在與a[]中,它的索引不會小於lo且不會大於hi
        if(lo>hi)return -1;
        int mid=lo+(hi-lo)/2;
        if(key < a[mid])return  rank(key,a,lo,mid-1);
        else if(key>a[mid])return rank(key,a,mid+1,hi);
        else return mid;
    }
    
    
    public static void main(String[] args) {
        int[] a={0,2,4,5,6,7,12,45};
        int t=rank(1,a);
        System.out.println(t);
        //StdOut.println ("Hello, World");
    }

}

該類的包路徑應該是com.sort 

當編譯完成后,仍需將該包的包名帶上,既com.sort.BinarySearch,又因為該編輯文件是在sort包下的,這就需要我們使用相對路徑定位到com包上,

使用命令java -cp ../../   com.sort.BinarySearch

或者使用絕對路徑執行 

java -cp /Users/moon/Documents/workspace/javaDemo1/src com.sort.BinarySearch

該命令成功執行。

 

 

補充:如果類中引用其它的jar包,編譯和運行需加入jar包的路徑

如:

javac -cp /Users/moon/Documents/workspace/javaDemo1/lib/algs4.jar  RandomSeq.java

java -cp /Users/moon/Documents/workspace/javaDemo1/lib/algs4.jar:../../ com.random.RandomSeq 5 100.0 200.0  

該類成功運行 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM