与 Haxe 中的 Java 函数交互

Interfacing with Java Functions in Haxe

我正在尝试使用 "extern" 从 Haxe 调用外部 Java 函数。

哈克斯代码:

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

我想了解构建失败的原因。有任何想法吗?

我不确定您是否需要使用 -lib 或其他方式引用您的 Java 代码?

但通常对于 Java 目标,使用 jar 文件要简单得多。通过键入 haxe --help,您将看到列出的相关命令,我从来不需要为 Java 目标手写 externs。

-java-lib <file> : 添加外部 JAR 或 class 目录库

这里解释失败的原因

https://groups.google.com/forum/#!topic/haxelang/EHeoGN_Ppvg

我尝试使用 class 路径和各种选项进行设置,但没有得到解决方案,我认为在 java 目标上手动执行 externs 有点繁琐。真的最好使用 Java 编译器来创建 jars 并让 haxe 自动生成外部文件,除非你遇到问题然后将其报告给 hxJava 存储库。

使用-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.classjavac ExternalClass.java

的输出