Codename One支持的java子集

时间:2015-03-26 23:37:37

标签: codenameone parparvm

我在新的Codename One应用程序上遇到了几个构建错误:

构建抱怨FileNotfoundException类和String split()方法。知道为什么吗?

xxx\Page.java:11: error: cannot find symbol
import java.io.FileNotFoundException;
  symbol:   class FileNotFoundException
  location: package java.io

xxx\Page.java:97: error: cannot find symbol
            final String[] parts = number_label.split("-");
  symbol:   method split(String)
  location: variable number_label of type String

顺便说一下,在CodenameOne中使用java 1.5是否有限制?我找不到用java 7编译的地方。

亲切的问候,

1 个答案:

答案 0 :(得分:1)

编辑:这个回复有点过时了。 Codename One现在支持subset of Java 8,但string.split()仍然是一个有问题的API调用。

Codename One支持Java 5的一个子集,您不应该尝试更改它,因为服务器转换代码依赖于目标Java 5的字节码行为,并且只支持API的一个非常特定的子集。

原因很简单,因为Codename One有多个VM实现(iOS,Dalvik / ART,XMLVM / ParparVM,黑莓等),它真的很难测试新东西(例如更新的字节码)而且真的很难以一种完全跨平台的方式添加新的API。您可以使用StringUtils.split()来实现此功能以及StringTokenizer

限制API还允许我们使可执行文件保持高效和小(相对)。与功能更全面的VM相比,我们的产量至少要小5倍。这对移动应用来说是一个大问题......

我们正在努力整合服务器端的各种VM,这将使我们能够在未来更轻松地添加核心VM API以及Java 8支持等功能。

您可以在此答案中了解更多信息: How does Codename One work?