2016-02-04 78 views
2

TL之後,DR:超出了我的項目目錄,與haxelib dev安裝,並列入Project.xml像任何其他圖書館,我的圖書館不被HAXE編譯器看到。在我的項目目錄中,它工作正常。顯然,其他庫不必在我的項目目錄中,以避免編譯器錯誤,所以我在這裏錯過了什麼?「類型未找到」轉類爲haxelib

我試圖通過遵循this page來發布一些代碼作爲haxelib。

我原來的軟件包命名空間爲flixel.addons。該代碼作爲不同項目的一部分,位於其子目錄source/flixel/addons下。在我開始之前,這個項目是編譯好的一部分。

我決定最好不要在釋放它時侵入別人的名字空間,所以我在我的類文件的package行上將命名空間更改爲mynamespace。我查看另一個haxelib的想法,並看到庫名稱可能與類路徑不同,這可能應該與包名稱空間相同。讓我感動的代碼我的項目,到新目錄中的其他地方:

mylibraryname 
\-Readme.md 
\-haxelib.json 
\-mynamespace 
    \-myclass.hx 

中的說明,我跑haxelib dev與路徑mylibraryname

在我的項目中,我添加了<haxelib name="mylibraryname" />到Project.xml。在我使用它的地方,我將import行從flixel.addons.myclass更改爲mynamespace.myclass

現在,試圖編譯我的項目(在FlashDevelop中,使用Haxe 3.2.1)在import行上給出錯誤Type not found: mynamespace.myclass。具有諷刺意味的是,FlashDevelop在光標位置myclass上按Ctrl + Shift + 1自動添加了該行。此外,我可以在import系列的紅色下劃線部分按F4鍵,並從它的新位置開啓myclass.hx就好了。

該文件包含:

package mynamespace;

和使用它我的項目文件包括:

import mynamespace.myclass;

同時,haxelib.json文件有:

{ 
    "name": "mylibraryname", 
    "url" : "...", 
    "license": "MIT", 
    "tags": ["haxe"], 
    "description": "...", 
    "version": "0.0.1-alpha", 
    "classPath": "mynamespace/", 
    "releasenote": "...", 
    "contributors": ["me"], 
    "dependencies": { 
    ... 
    } 
} 

件事情我想:

  1. 即使我認爲它應該在這一點上工作,我試圖創建一個zip文件,並在其上使用haxelib install的下一個步驟。不用找了。

  2. 我也碰巧在我的項目中還有一個目錄mynamespace,但我真的不需要任何東西了,所以我刪除了它。不用找了。

  3. 只是可以肯定有沒有錯字的一些地方,我一屁股的mylibraryname目錄的副本(已在...\haxe\lib\mylibraryname\0.0.1-alpha正確安裝,並提出了.current文件與它0.0.1-alpha,BTW)回到我的項目。它編譯得很好。

  4. 即使它不是在文檔中提到,我看到了另一個庫包含文件haxelib.xml一起haxelib.json,含this。有或沒有這個文件存在,沒有改變。 (不連代碼完成,工作正常上市班裏的獨特性和遺傳變量,但在輸出窗格中生成完全相同的Type not found的錯誤,因爲我編譯期間得到。)

  5. haxelib selfupdate。已經是最新的。不用找了。

  6. Windows重新啓動!爲什麼不?不用找了。

如何讓我的項目編譯?爲什麼Haxe在FlashDevelop和haxelib做的時候看不到它,當我的lib的目錄結構和haxelib.json是在工作第三方haxelibs和文檔之後建模的?

還是我誤解了一些東西,你必須在項目的上下文中測試haxelibs,直到它們被真正釋放爲止?如果是這種情況,我不確定在haxelib devhaxelib install mylib.zip步驟中究竟應該做什麼。

+1

您能否爲我們提供庫類中的包行,項目代碼中的導入行以及'haxelib.json'的內容? –

+0

@jonasmalacofilho我不相信我的軟件包或導入行錯誤,如果它編譯好我的項目目錄層次結構的一部分,但我張貼他們按要求。我還發布了haxelib.json的+1。 – Kev

回答

3

問題應該在haxelib.jsonclassPath指令。

它的值應該是root/base包中模塊的相對搜索路徑,而不是包的路徑。

嘗試將其更改爲""或完全忽略該指令。

+0

非常感謝!哇,從文檔來看,我一點也不清楚,而且我沒有注意到看着其他haxelib.json文件的特殊差別。 – Kev

+1

@Kev很高興聽到它的工作!爲了將來的參考,'haxelib.json'中的'classPath'字段的行爲與'-cp'編譯器指令類似。 –

+0

謝謝。不熟悉'-cp',但很高興知道。 (通常,似乎Project.xml和FlashDevelop一起否定了直接實際處理編譯器標記的需要。) – Kev

1

你的庫的結構和設置與haxelib dev似乎聽起來很好,我能夠編譯一個項目與一個自定義庫創建。

我唯一能想到的是myclass.hx裏面的package被錯誤地聲明瞭(也許你在移動文件時忘了調整它?)。

仔細檢查該文件中的第一行是這樣的:

package mynamespace; 
+0

謝謝,但是當我說「我將名稱空間更改爲mynamespace」時,這就是我的意思。但是+1,因爲仔細檢查它是很好的。 – Kev

+0

更新後的帖子澄清。 – Kev

1

也許你可以試試這樣做:

  1. 與HaxeToolkit庫的名稱創建一個文件夾\ haxe \ lib(我會稱之爲「example-lib」,你可以隨心所欲地調用它)。

  2. 在example-lib文件夾內創建另一個帶有版本名稱標題的文件夾(例如:0,0,1(注意逗號)),並將類放入其中。

  3. 在example-lib文件夾內創建一個名爲「.current」的文件(如果你不行,試着從另一個haxelib文件夾複製一個文件夾並粘貼到你的文件夾中)並在裏面輸入版本名稱(例如:0.0 0.1)。

  4. 在你的project.xml,添加

    <haxelib name="example-lib" />

+0

當我運行'haxelib install mylib.zip'時,這裏指出的步驟是自動執行的 - 正如我上面所說的那樣,它已經在'... \ haxe \ lib \ mylibraryname'中正確安裝了它。但是檢查'.current'文件很好,所以+1。它存在幷包含子文件夾的名稱('0.0.1-alpha'),其中我的文件在上面的結構中找到。 – Kev

+0

更新後發佈澄清。 – Kev

相關問題