【问题标题】:haxe cannot find csv library installed by haxelibhaxe 找不到 haxelib 安装的 csv 库
【发布时间】:2015-11-24 10:00:54
【问题描述】:

编辑: 因为其他人肯定会遇到同样的问题,所以将其保留,但根本原因是 ubuntu 软件包是一个非常旧的 haxe 版本。我卸载了它并从源代码安装,一切正常


我已经在我的 ubuntu 系统上全局安装了 haxe,并将 haxelib 设置为用户,安装路径为 /home/mdemello/opt/share/haxe/lib

haxelib 似乎可以工作,除了安装后错误:

$ haxelib install csv
Downloading csv-0,4,0.zip...
Download complete : 10518 bytes in 4.3s (2.3KB/s)
  Install CHANGES.txt
  Install haxelib.json
  Created lib/
  Install LICENSE.txt
  Install README.md
  Created test/
  Install test.hxml
  Created lib/format/
  Created lib/format/csv/
  Install lib/format/csv/Reader.hx
  Install lib/format/csv/Utf8Reader.hx
  Install lib/format/csv/Data.hx
  Install test/Test.hx
  Current version is now 0.4.0
Done
Invalid field access : index

但是通过 -lib 使用已安装的库失败;我必须使用 -cp 指定完整路径:

$ head CSV.hx
import format.csv.Reader;

$ haxe -lib csv -x CSV.hx
./CSV.hx:1: characters 7-24 : Class not found : format.csv.Reader

$ haxelib path csv
/home/mdemello/opt/share/haxe/lib/csv/0,4,0/
-D csv

$ haxe -cp /home/mdemello/opt/share/haxe/lib/csv/0,4,0/lib/ -x CSV.hx
# works

编辑:这是使用haxe -v 运行时的输出:

$ haxe -v -lib csv -x CSV.hx
Classpath : /home/mdemello/opt/share/haxe/lib/csv/0,4,0/;./;/usr/share/haxe/std/neko/_std/;/usr/share/haxe/std/
Defines : true;sys;neko;haxe_ver;haxe_release;haxe3;dce;csv
Parsed /usr/share/haxe/std/StdTypes.hx
Parsed /usr/share/haxe/std/neko/_std/String.hx
Parsed /usr/share/haxe/std/neko/_std/Array.hx
Parsed /usr/share/haxe/std/haxe/EnumTools.hx
Parsed /usr/share/haxe/std/neko/_std/Std.hx
Parsed ./CSV.hx
./CSV.hx:1: characters 7-24 : Class not found : format.csv.Reader

我注意到它从 -lib 添加的类路径是 /home/mdemello/opt/share/haxe/lib/csv/0,4,0/ 而我必须通过 -cp 手动添加的类路径是 /home/mdemello/opt/share/haxe/lib/csv/0,4,0/lib

【问题讨论】:

  • haxelib list 是否列出了 csv 库(这表明它已正确安装)? haxelib 目录中的csv 文件夹是否有一个.current 文件,其中包含0.4.0?编辑:另外,haxelib 给你的是完整的错误吗?没有堆栈跟踪?
  • 是的,haxelib list 有效,并且 csv 有一个 .current 文件和 0,4,0 目录。这也是来自 haxe 的完整错误消息。我将使用 -v 重新运行并添加输出。
  • 啊,好像是包本身的问题。将 csv/0,4,0/lib/format 符号链接到 csv/lib/format 使一切运行良好。我只是不走运,那是我使用的第一个 haxe 包。

标签: ubuntu classpath haxe haxelib


【解决方案1】:

编辑:看起来 ubuntu (3.0.0) 上的默认 haxelib 不支持 csv 包中的 classPath 指令。下面的解决方法仍然有效,但不需要这样做。改为更新 haxe。


看起来像是 csv 包目录结构的问题。我通过从lib/format -> format 添加以下符号链接来修复它:

csv
└── 0,4,0
    ├── format -> lib/format/  <--- symlink added
    ├── lib
    │   └── format
    │       └── csv
    └── test

【讨论】:

  • 库使用haxelib.json 中的classPath 指令指示源位于/lib,而不是/。由于某种原因,您的设置似乎没有遵守该指令......
猜你喜欢
  • 2015-10-16
  • 2020-07-14
  • 2017-04-18
  • 2015-01-05
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
  • 2016-01-28
  • 2016-04-05
相关资源
最近更新 更多