Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler errors &引用;“找不到类型”;将类转换为haxelib之后_Compiler Errors_Namespaces_Package_Haxe_Haxelib - Fatal编程技术网

Compiler errors &引用;“找不到类型”;将类转换为haxelib之后

Compiler errors &引用;“找不到类型”;将类转换为haxelib之后,compiler-errors,namespaces,package,haxe,haxelib,Compiler Errors,Namespaces,Package,Haxe,Haxelib,TL;DR:在我的项目目录之外,与haxelib dev一起安装,并包含在project.xml中,与任何其他库一样,Haxe编译器看不到我的库。在我的项目目录中,它运行良好。显然,其他库不必在我的项目目录中以避免编译器错误,那么我在这里缺少什么呢 我试图通过以下方式发布一些haxelib代码 我最初的包名称空间是flixel.addons。代码是另一个项目的一部分,位于其source/flixel/addons子目录下。在我开始之前,这个项目是我的一部分 我决定在发布它时最好不要侵入其他人的名

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

我试图通过以下方式发布一些haxelib代码

我最初的包名称空间是
flixel.addons
。代码是另一个项目的一部分,位于其
source/flixel/addons
子目录下。在我开始之前,这个项目是我的一部分

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

mylibraryname
\-Readme.md
\-haxelib.json
\-mynamespace
  \-myclass.hx
按照说明,我运行了
haxelib dev
,路径是
mylibraryname

在我的项目中,我将
添加到project.xml。在我使用它的地方,我将
import
行从
flixel.addons.myclass
更改为
mynamespace.myclass

现在,尝试编译我的项目(在FlashDevelop中,使用Haxe 3.2.1)时会出现错误,
Type not found:mynamespace.myclass
位于使用它的
import
行。具有讽刺意味的是,FlashDevelop在使用该行的位置按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": {
    ...
  }
}
我尝试过的事情:

  • 尽管我认为它应该在这一点上工作,但我尝试了下一步,创建一个zip文件并在其上使用
    haxelib install
    。没有变化

  • 我的项目中还有一个目录
    mynamespace
    ,但我不再需要它了,所以我删除了它。没有变化

  • 为了确保某个地方没有输入错误,我将
    mylibraryname
    目录的副本(该目录已正确安装在
    ..\haxe\lib\mylibraryname\0.0.1-alpha
    中)砰的一声放回我的项目中,并创建了一个
    .current
    文件,其中包含
    0.0.1-alpha
    ,顺便说一句。很好

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

  • haxelib自更新
    。已经是最新的了。没有变化

  • Windows重新启动!为什么不呢?没有变化

  • 如何让我的项目进行编译?为什么当FlashDevelop和haxelib这样做时,当我的库的目录结构和
    haxelib.json
    是以第三方haxelib和文档为模型时,Haxe看不到它


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

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

    我能想到的唯一一件事是
    myclass.hx
    中的
    声明不正确(可能您在移动文件时忘记了调整它?)

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

    package mynamespace;
    

    也许您可以尝试这样做:

  • 在HaxeToolkit\haxe\lib中创建一个名为库的文件夹(我称之为“示例库”,您可以随意调用)

  • 在示例库文件夹中创建另一个文件夹,标题为版本名(例如:0,0,1(注意逗号)),并将类放入其中

  • 在示例库文件夹中创建一个名为“.current”的文件(如果不能,请尝试从另一个haxelib文件夹复制一个文件并粘贴到您的文件夹中),然后在其中输入版本名(例如:0.0.1)

  • 在Project.xml中,添加


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

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


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

    谢谢,但这正是我说的“我将名称空间更改为
    mynamespace
    ”的意思但是+1,因为再次检查这个很好。更新了帖子以澄清。当我运行
    haxelib安装mylib.zip时,这里指示的步骤是自动执行的——正如我上面所说的,它已经在
    …\haxe\lib\mylibraryname
    中正确安装了它。但是检查
    .current
    文件是很好的,所以+1表示。它存在并包含子文件夹(
    0.0.1-alpha
    )的名称,在上面的结构中找到了我的文件。更新了帖子以澄清问题。您能向我们提供软件包吗