1. 程式人生 > >【Zookeeper】Zookeeper原始碼環境搭建出現的問題

【Zookeeper】Zookeeper原始碼環境搭建出現的問題

一、ant eclipse 時提示Connection reset

    從GitHub下載下來的壓縮包不是eclipse版本的工程,我們需要使用ant eclipse命令編譯成eclipse版本的專案,執行過程提示Connection reset 是編譯檔案build.xml中的路徑不支援下載了。修改原始碼路徑下的build.xml檔案修改前:
<get src="https://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2"
修改後:
<get src="http://ufpr.dl.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2"
修改完成重新執行即可。

二、匯入工程編譯之後報錯‘<>’operator is not allowed for source level below 1.7

    匯入工程之後報錯85個,其中有多數都是這個錯誤,這個錯誤是編譯版本的原因。解決方法將編譯版本改成1.7,選中專案然後右鍵-->Properties-->Java Compiler 將編譯器版本修改為1.7    

三、報錯提示“org.apache.zookeeper.version.Info can not be resolved to a type”

    看了下其它的人搭建工程過程,在修改完編譯器之後就萬事大吉了,我這裡還有9個錯誤,發生在Version.Java中,這個類實現了Info這個介面,但是Info這個介面沒有找到。    解決方法是在org.apache.zookeeper.version.util包裡有個VerGen.java檔案,執行這個檔案來生成Info.Java,我理解這個是用來在Zookeeper每次釋出版本的時候用來固定生成版本號和日期的。在VerGen.Java的main方法上有提示
  /**
     * Emits a org.apache.zookeeper.version.Info interface file with version and
     * revision information constants set to the values passed in as command
     * line parameters. The file is created in the current directory. <br>
     * Usage: java org.apache.zookeeper.version.util.VerGen maj.min.micro[-qualifier]
     * rev buildDate
     *
     * @param args
     *            <ul>
     *            <li>maj - major version number
     *            <li>min - minor version number
     *            <li>micro - minor minor version number
     *            <li>qualifier - optional qualifier (dash followed by qualifier text)
     *            <li>rev - current Git revision number
     *            <li>buildDate - date the build
     *            </ul>
     */
    public static void main(String[] args) {
        if (args.length != 3)
            printUsage();
        try {
            Version version = parseVersionString(args[0]);
            if (version == null) {
                System.err.println(
                        "Invalid version number format, must be \"x.y.z(-.*)?\"");
                System.exit(1);
            }
            String rev = args[1];
            if (rev == null || rev.trim().isEmpty()) {
                rev = "-1";
            } else {
                rev = rev.trim();
            }
            generateFile(new File("."), version, rev, args[2]);
        } catch (NumberFormatException e) {
            System.err.println(
                    "All version-related parameters must be valid integers!");
            throw e;
        }
    }
    傳入三個引數執行這個檔案,執行方式右鍵-->Run As-->Run Configuration-->JavaApplication-->Arguments 在Program arguments 中輸入三個引數我理解的第一個引數是版本號,第二個是GIT版本,第三個是釋出日期,所以我輸入的如下內容,三個引數空格隔開        執行成功之後控制檯是什麼也沒有列印的,重新整理工程會看見多了一個org目錄,該目錄下有了一個Info.Java 不知道為什麼沒有生成到包中,所以我手動建立了一個org.apache.zookeeper.version 包 然後將檔案拖了進去,世界就安靜了。建立包的時候如果報錯那麼選中下邊的Create package-info.java 生成之後刪了就可以了。