"Type not found" 将 class 变成 haxelib 之后
"Type not found" after turning class into a haxelib
TL;DR:在我的项目目录之外,与 haxelib dev
一起安装,并像任何其他库一样包含在 Project.xml
中,我的库不是被 Haxe 编译器看到。在我的项目目录中,它工作正常。显然其他库不必在我的项目目录中以避免编译器错误,所以我在这里缺少什么?
我正在尝试按照 this page.
发布一些代码作为 haxelib
我最初的包命名空间是 flixel.addons
。该代码作为另一个项目的一部分,位于其 source/flixel/addons
子目录下。在我开始之前,它是编译好的项目的一部分。
我决定在发布时最好不要侵犯别人的命名空间,所以我在 class 文件的 package
行将命名空间更改为 mynamespace
。我查看了另一个 haxelib 的想法,发现库名称可以与 class 路径不同,这可能应该与包命名空间相同。所以我将代码从我的项目中移出,放到其他地方的新目录中:
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)出现错误,Type not found: mynamespace.myclass
在使用它的 import
行。具有讽刺意味的是,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": {
...
}
}
我试过的东西:
尽管我认为此时它应该可以正常工作,但我还是尝试了创建一个 zip 文件并在其上使用 haxelib install
的下一步。没有变化。
我的项目中也碰巧还有一个目录mynamespace
,但我真的不需要里面的任何东西了,所以我删除了它。没有变化。
为了确保某处没有拼写错误,我复制了 mylibraryname
目录(已正确安装在 ...\haxe\lib\mylibraryname[=36=].0.1-alpha
中并制作了 .current
文件,里面有 0.0.1-alpha
,顺便说一句)回到我的项目中。编译正常。
尽管文档中没有提及,但我看到另一个库在 haxelib.json
旁边包含一个文件 haxelib.xml
,其中包含 this。有或没有这个文件存在,没有变化。 (甚至没有代码完成,它可以很好地列出我的 class' 唯一和继承的变量,但在编译期间在输出窗格中生成完全相同的 Type not found
错误。)
haxelib selfupdate
。已经是最新的了。没有变化。
Windows重启!为什么不?没有变化。
如何编译我的项目?为什么 Haxe 在 FlashDevelop 和 haxelib 看到它时看不到它,而当我的 lib 的目录结构和 haxelib.json
是在使用第三方 haxelib 和文档后建模时?
或者我误解了什么,你必须在项目的上下文中测试 haxelibs,直到它们真正发布?如果是这种情况,我不确定 haxelib dev
和 haxelib install mylib.zip
步骤应该做什么。
您的库的结构和使用 haxelib dev
进行设置似乎很合理,而且我能够使用这样创建的自定义库来编译项目。
我唯一能想到的就是myclass.hx
里面的package
声明错误(可能是你搬文件的时候忘记调整了?)
仔细检查该文件中的第一行是否如下所示:
package mynamespace;
也许你可以尝试这样做:
在HaxeToolkit\haxe\lib中创建一个以你的图书馆名称命名的文件夹(我将其命名为"example-lib",你可以随意命名)。
在 example-lib 文件夹中创建另一个文件夹,标题为版本名称(例如:0,0,1(注意逗号))并将您的 类在里面。
在 example-lib 文件夹中创建一个名为“.current”的文件(如果不能,请尝试从另一个 haxelib 文件夹复制一个并粘贴到您的文件夹中)并在其中输入版本名称(例如:0.0.1)。
在您的Project.xml中添加
<haxelib name="example-lib" />
问题应该是haxelib.json
中的classPath
指令。
它的值应该是 root/base 包中模块的相对搜索路径,而不是你的包的路径。
尝试将其更改为 ""
或完全省略该指令。
TL;DR:在我的项目目录之外,与 haxelib dev
一起安装,并像任何其他库一样包含在 Project.xml
中,我的库不是被 Haxe 编译器看到。在我的项目目录中,它工作正常。显然其他库不必在我的项目目录中以避免编译器错误,所以我在这里缺少什么?
我正在尝试按照 this page.
发布一些代码作为 haxelib我最初的包命名空间是 flixel.addons
。该代码作为另一个项目的一部分,位于其 source/flixel/addons
子目录下。在我开始之前,它是编译好的项目的一部分。
我决定在发布时最好不要侵犯别人的命名空间,所以我在 class 文件的 package
行将命名空间更改为 mynamespace
。我查看了另一个 haxelib 的想法,发现库名称可以与 class 路径不同,这可能应该与包命名空间相同。所以我将代码从我的项目中移出,放到其他地方的新目录中:
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)出现错误,Type not found: mynamespace.myclass
在使用它的 import
行。具有讽刺意味的是,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": {
...
}
}
我试过的东西:
尽管我认为此时它应该可以正常工作,但我还是尝试了创建一个 zip 文件并在其上使用
haxelib install
的下一步。没有变化。我的项目中也碰巧还有一个目录
mynamespace
,但我真的不需要里面的任何东西了,所以我删除了它。没有变化。为了确保某处没有拼写错误,我复制了
mylibraryname
目录(已正确安装在...\haxe\lib\mylibraryname[=36=].0.1-alpha
中并制作了.current
文件,里面有0.0.1-alpha
,顺便说一句)回到我的项目中。编译正常。尽管文档中没有提及,但我看到另一个库在
haxelib.json
旁边包含一个文件haxelib.xml
,其中包含 this。有或没有这个文件存在,没有变化。 (甚至没有代码完成,它可以很好地列出我的 class' 唯一和继承的变量,但在编译期间在输出窗格中生成完全相同的Type not found
错误。)haxelib selfupdate
。已经是最新的了。没有变化。Windows重启!为什么不?没有变化。
如何编译我的项目?为什么 Haxe 在 FlashDevelop 和 haxelib 看到它时看不到它,而当我的 lib 的目录结构和 haxelib.json
是在使用第三方 haxelib 和文档后建模时?
或者我误解了什么,你必须在项目的上下文中测试 haxelibs,直到它们真正发布?如果是这种情况,我不确定 haxelib dev
和 haxelib install mylib.zip
步骤应该做什么。
您的库的结构和使用 haxelib dev
进行设置似乎很合理,而且我能够使用这样创建的自定义库来编译项目。
我唯一能想到的就是myclass.hx
里面的package
声明错误(可能是你搬文件的时候忘记调整了?)
仔细检查该文件中的第一行是否如下所示:
package mynamespace;
也许你可以尝试这样做:
在HaxeToolkit\haxe\lib中创建一个以你的图书馆名称命名的文件夹(我将其命名为"example-lib",你可以随意命名)。
在 example-lib 文件夹中创建另一个文件夹,标题为版本名称(例如:0,0,1(注意逗号))并将您的 类在里面。
在 example-lib 文件夹中创建一个名为“.current”的文件(如果不能,请尝试从另一个 haxelib 文件夹复制一个并粘贴到您的文件夹中)并在其中输入版本名称(例如:0.0.1)。
在您的Project.xml中添加
<haxelib name="example-lib" />
问题应该是haxelib.json
中的classPath
指令。
它的值应该是 root/base 包中模块的相对搜索路径,而不是你的包的路径。
尝试将其更改为 ""
或完全省略该指令。