首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用JSweet将Java模块移植到JS

用JSweet将Java模块移植到JS
EN

Stack Overflow用户
提问于 2017-06-14 01:45:34
回答 1查看 1.1K关注 0票数 2

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

JSweet似乎是一个不错的选择。因此,我尝试将java文件的内容粘贴到在线JSweet沙箱中,但我得到了以下错误:

代码语言:javascript
复制
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,所以我不知道如何解决这些问题。我很感激你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2017-06-14 06:09:33

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

但是,使用JSweet,可以将一些Java库编译成类型记录/JavaScript。J4TS组织提供了一些关于如何编译和支持一些Java的示例。如果您的程序使用不受支持的库,则有几种解决问题的方法:

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

JSweet v2还没有发布,但是它提供了一个API来扩展转换程序并支持更多的本地API。我建议在有时间的时候使用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44534114

复制
相关文章

相似问题

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