我试图使用“extern”从Haxe调用外部Java函数。
Haxe Code:
extern class Ext
{
public static function test():String;
}
class Sample
{
public static function main()
{
trace(Ext.test());
}
}
Java代码:
public class Ext
{
public static String test()
{
return "Hello";
}
}
Sample.hx和Ext.java文件都在同一个文件夹中。
当我尝试执行 haxe -main Sample -java Sample 时,出现以下错误。
C:\Users\ila5\Desktop\CPP>haxe -main Sample -java Sample
haxelib run hxjava hxjava_build.txt --haxe-version 3201 --feature-level 1
javac.exe "-sourcepath" "src" "-d" "obj" "-g:none" "@cmd"
src\haxe\root\Sample.java:33: error: cannot find symbol
haxe.Log.trace.__hx_invoke2_o(0.0, haxe.root.Ext.test(), 0.0, new haxe.lang.DynamicObject(new java.lang.String[]{"className", "fileName", "methodName"}, new java.lang.Object[]{"Sample", "Sample.hx", "main"}, new java.lang.String[]{"lineNumber"}, new double[]{((double) (((double) (10) )) )}));
^
symbol: class Ext
location: package haxe.root
1 error
Compilation error
Native compilation failed
Error: Build failed
我想了解构建失败的原因。有任何想法吗?
答案 0 :(得分:2)
我不确定您是否需要使用-lib
或其他内容来引用您的Java代码?
但通常使用Java目标,使用jar文件要简单得多。通过键入haxe --help
,您将看到列出的相关命令,我从未需要为Java目标手写外部函数。
-java-lib <file>
:添加外部JAR或类目录库
答案 1 :(得分:1)
这里解释了失败的原因
https://groups.google.com/forum/#!topic/haxelang/EHeoGN_Ppvg
我尝试使用类路径和各种选项进行设置,但没有得到解决方案,我认为手动对java目标进行externs只是有点繁琐。使用Java编译器创建jar并让haxe自动生成externs,除非你遇到问题然后将其报告给hxJava存储库,真的更好。
答案 2 :(得分:1)
使用getNumberOfCameras
。
-java-lib
,
# build.sh
haxe Main.hx -main Main -java-lib javalib/ -java out
,
// ./Main.hx
import external.*;
class Main {
public static function main() {
trace(external.ExternalClass.myFunction());
}
}
,
// ./javalib/external/ExternalClass.java
package external;
public class ExternalClass {
public static String myFunction() {
return "External Java function";
}
}
是./javalib/external/ExternalClass.class