"Type not found" 在把班级变成哈克塞利布之后



TL;DR:在我的项目目录之外,与haxelib dev一起安装,并像任何其他库一样包含在Project.xml中,Haxe 编译器看不到我的库。 在我的项目目录中,它工作正常。 显然,其他库不必在我的项目目录中以避免编译器错误,那么我在这里缺少什么?

我正在尝试通过遵循此页面将一些代码作为 haxelib 发布。

我最初将我的包命名空间作为flixel.addons. 该代码作为不同项目的一部分,位于其source/flixel/addons子目录下。 在我开始之前,该项目是编译得很好的一部分。

我决定在发布时最好不要入侵其他人的命名空间,所以我将命名空间更改为 mynamespace 在我的类文件的package行上。 我查看了另一个 haxelib 以获取想法,发现库名称可以与类路径不同,类路径可能应该与包命名空间相同。 所以我把代码从我的项目中移出,移到其他地方的新目录中:

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

按照说明,我haxelib dev运行了通往mylibraryname的路径。

在我的项目中,我向 Project.xml 添加了<haxelib name="mylibraryname" />。 在我使用它的地方,我将import行从 flixel.addons.myclass 更改为 mynamespace.myclass .

现在,尝试编译我的项目(在FlashDevelop中,使用Haxe 3.2.1(会给出错误,Type not found: mynamespace.myclass使用它的import行上。 具有讽刺意味的是,FlashDevelopment自动添加了该行,按下Ctrl + Shift+1并将光标放在使用它myclass。 此外,我可以在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 目录的副本(已在 ...haxelibmylibraryname.0.1-alpha 中正确安装并制作了一个包含0.0.1-alpha.current文件,顺便说一句(放回我的项目中。 它编译得很好。

  4. 尽管文档中没有提到,但我看到另一个库包含一个文件haxelib.xml haxelib.json ,包含这个。 无论是否存在此文件,都不会发生任何更改。 (甚至不是代码完成,它可以很好地列出类的唯一变量和继承变量,但在"输出"窗格中生成与我在编译期间得到的完全相同的Type not found错误。

  5. haxelib selfupdate . 已经是最新的了。 没有变化。

  6. 视窗重启! 为什么不呢? 没有变化。

如何编译我的项目? 为什么当FlashDevelop和haxelib看到它时,当我的库的目录结构和haxelib.json是按照第三方haxelibs和文档建模时,Haxe看不到它?

还是我误解了什么,你必须在项目的上下文中测试 haxelibs,直到它们真正发布? 如果是这种情况,我不确定应该用haxelib devhaxelib install mylib.zip步骤做什么。

问题应该是haxelib.json中的classPath指令。

它的值应该是根/基包中模块的相对搜索路径,而不是包的路径。

尝试将其更改为""或完全省略该指令。

您的库的结构和用haxelib dev设置它似乎很合理,我能够使用像这样创建的自定义库编译一个项目。

我唯一能想到的是myclass.hx内部的package被错误地声明了(也许你在移动文件时忘记调整它了?

仔细检查该文件中的第一行是否如下所示:

package mynamespace;

也许你可以尝试这样做:

  1. 在HaxeToolkit\haxe\lib中创建一个带有库名称的文件夹(我称之为"example-lib",你可以随心所欲地称呼它(。

  2. 在 example-lib 文件夹中创建另一个带有版本名称标题的文件夹(例如:0,0,1(注意逗号((,并将您的类放入其中。

  3. 在 example-lib 文件夹中创建一个名为".current"的文件(如果不能,请尝试从另一个 haxelib 文件夹中复制一个并粘贴到您的文件夹中(,然后在其中输入版本名称(例如:0.0.1(。

  4. 在项目.xml中,添加

    <haxelib name="example-lib" />

相关内容

  • 没有找到相关文章

最新更新