首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将类转换为haxelib后的“类型未找到”

将类转换为haxelib后的“类型未找到”
EN

Stack Overflow用户
提问于 2016-02-04 21:14:18
回答 3查看 2.2K关注 0票数 2

TL;DR:在我的项目目录之外,安装了haxelib dev,并像其他库一样包含在Project.xml中,Haxe编译器看不到我的库。在我的项目目录中,它工作得很好。显然,其他库不一定要在我的项目目录中才能避免编译器错误,那么我在这里遗漏了什么呢?

通过遵循此页,我试图以haxelib的形式发布一些代码。

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

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

代码语言:javascript
复制
mylibraryname
\-Readme.md
\-haxelib.json
\-mynamespace
  \-myclass.hx

根据说明,我运行了haxelib dev并提供了通往mylibraryname的路径。

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

现在,尝试编译我的项目(在FlashDevelop中使用Haxe3.2.1)会出现错误,Type not found: mynamespace.myclass在使用它的import行上。具有讽刺意味的是,FlashDevelop自动添加了这一行,Ctrl+Shift+1将光标按在使用它的myclass上。此外,我可以在F4行的红下划线上按下myclass.hx,这样就可以从新位置打开myclass.hx了。

该文件包含:

package mynamespace;

使用它的项目文件包含:

import mynamespace.myclass;

同时,haxelib.json文件有:

代码语言:javascript
复制
{
  "name": "mylibraryname",
  "url" : "...",
  "license": "MIT",
  "tags": ["haxe"],
  "description": "...",
  "version": "0.0.1-alpha",
  "classPath": "mynamespace/",
  "releasenote": "...",
  "contributors": ["me"],
  "dependencies": {
    ...
  }
}

我尝试过的

  1. 尽管我认为它在这一点上应该有效,但我尝试了创建压缩文件并在其上使用haxelib install的下一步。没有变化。
  2. 我还碰巧在我的项目中还有一个目录mynamespace,但是我不再需要它了,所以我删除了它。没有变化。
  3. 为了确保在某个地方没有错误,我将mylibraryname目录的副本(该目录已在...\haxe\lib\mylibraryname\0.0.1-alpha中正确安装,并制作了一个包含0.0.1-alpha.current文件,BTW)返回到我的项目中。汇编得很好。
  4. 尽管在文档中没有提到它,但我看到了另一个库,它在haxelib.json旁边包含一个文件haxelib.json,包含。无论是否存在此文件,都不进行任何更改。(甚至连代码完成都没有,它可以很好地列出类的唯一和继承变量,但在输出窗格中生成与编译期间得到的完全相同的Type not found错误。)
  5. haxelib selfupdate。已经是最新的了。没有变化。
  6. 窗户重新启动!为什么不行?没有变化。

如何让我的项目编译?为什么当FlashDevelop和haxelib完成时,以及当我的lib的目录结构和haxelib.json是在运行第三方haxelib和文档之后建模时,Haxe看不到它呢?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-05 11:22:01

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

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

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

票数 4
EN

Stack Overflow用户

发布于 2016-02-04 22:05:11

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

我唯一能想到的是,packagemyclass.hx中的声明是错误的(可能您在移动文件时忘记了调整它?)。

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

代码语言:javascript
复制
package mynamespace;
票数 2
EN

Stack Overflow用户

发布于 2016-02-05 01:59:05

也许你可以试试这样做:

  1. 在HaxeToolkit\haxe\lib中创建一个具有库名的文件夹(我将称之为“示例-lib”,您可以任意命名它)。
  2. 在示例-lib文件夹中创建另一个文件夹,其标题为版本号(例如: 0,0,1 (注意逗号)),并将类放入其中。
  3. 在示例-lib文件夹中创建一个名为".current“的文件(如果不能,请尝试从另一个haxelib文件夹复制一个文件并粘贴到您的文件夹中),并在其中输入版本号(例如: 0.0.1)。
  4. 在您的Project.xml中,添加 <haxelib name="example-lib" />
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35211755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档