我想用最新版本的
javac
(例如11.0.19
)“重新创建”J2ME / CLDC,并编译一个专门构建的Java程序,而不需要任何或最小基类。显然,像 java.lang.Object
或 java.lang.String
(等)这样的类需要存在,因为它们是核心功能。但除此之外,我想提供自己的“设备特定”类(例如,使用本机绑定)并使用标准 javac
编译器。
我已经摆弄了一些选项
--module-source-path
、-profile
、--class-path
(以及其他),但没有取得多大成果。这些开关的文档也非常“薄”。
是否有更好的文档或者是否有可能获得预期的结果?
如何使用 javac 编译 Java 类,甚至不依赖于 java.lang.* 这样的基类?
第一步是查找或准备一个(或多个)JAR 文件,其中包含所有“核心”类的类文件。对于 J2ME / CLDC,您应该能够从现有发行版获取现有 JAR 文件。请注意,
javac
只需要类的 API 签名,因此您可以使用包含“存根”类的 JAR;即没有任何实际实现细节的类。
然后使用
--bootclasspath
选项告诉 javac
在哪里可以找到核心依赖项。例如:
javac ... -bootclasspath /path/to/cldc.jar ... Hello.java