gpt4 book ai didi

javascript - 使用 JSweet 将 Java 模块移植到 JS

转载 作者:行者123 更新时间:2023-11-30 06:39:56 36 4
gpt4 key购买 nike

我想将这些 Java 函数转换为 JavaScript:CircleFitter.java不过我不需要文件读取部分。

JSweet似乎是一个不错的选择。所以,我尝试将java文件的内容粘贴到online JSweet sandbox中,但我收到这些错误:

Line 58: module 'java.io' has no exported member 'FileReader'
Line 58: property 'FileReader' does not exist on type 'typeof io'
Line 58: module 'java.text' has no exported member 'DecimalFormat'
Line 58: property 'DecimalFormat' does not exist on type 'typeof text'
Line 58: module 'java.text' has no exported member 'DecimalFormatSymbols'
Line 58: property 'DecimalFormatSymbols' does not exist on type 'typeof text'
Line 58: module 'java' has no exported member 'awt'
Line 58: property 'awt' does not exist on type 'typeof java'
Line 69: property 'in' does not exist on type 'typeof System'
Line 76: property 'exit' does not exist on type 'typeof System'
Line 125: property 'exit' does not exist on type 'typeof System'
Line 128: property 'exit' does not exist on type 'typeof System'

这些错误似乎分为两类:

  1. 模块 __ 没有导出成员 __
  2. 类型 __ 上不存在属性 __

我不使用 Java,所以我不知道如何解决这些问题。我很感谢您的帮助。

最佳答案

JSweet 对 Java API 的支持有限。沙箱使用j4ts仿真库,它不提供 java.text 包的任何实现,也不提供 java.io 的任何实现。它也不支持 System.exit(因为它在大多数情况下在浏览器中没有意义)。最后,对 java.awt 的任何支持都极其困难,而且只能是非常局部的。因此,实际上,最好的方法是避免使用不受支持的 Java API 并将其替换为 JavaScript API(JSweet 提供对它们的访问)。

但是,使用 JSweet,可以将一些 Java 库编译为 TypeScript/JavaScript。 J4TS organization提供了一些有关如何编译和支持某些 Java 库的示例。如果您的程序使用不受支持的库,您有多种替代方法来解决问题:

  • 重写/重新设计您的程序以删除不支持的依赖项
  • 这样做,您可以在方法和字段上使用 @jsweet.lang.Erased 注释来从翻译中排除某些代码(如果您根本不想修改代码,您可以在 jsweetconfig 中定义这些注释.json 文件)
  • 为 J4TS 做出贡献,添加对您要使用的 API 的支持
  • 使用 JSweet v2,编写 JSweet 扩展以原生支持新的 API。

JSweet v2 尚未发布,但它提供了一个 API 来扩展转译器并原生支持更多 API。我建议在可用时使用它。

关于javascript - 使用 JSweet 将 Java 模块移植到 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44534114/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com