1

我在我的全新 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 编译的地方。

亲切的问候,

4

1 回答 1

1

编辑:这个回复有点过时了。Codename One现在支持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 支持等功能。

您可以在此答案中了解更多信息: Codename One 是如何工作的?

于 2015-03-27T05:40:17.267 回答