试图克服 Android Java jdk 限制

Attempting to overcome Android Java jdk limitations

所以我正在尝试开发一个 Android 应用程序,它可以读取日语文本文件,并向 reader 提供关于正在使用的词汇和语法的有见地的信息。

为此,我需要一个日文词法分析器来将非间隔文本解析为单个单词。

我从 Apache 找到了一些非常有用的库:

Lucene-Analyzers-Kuromoji(日语词法分析器)

Lucene-Analyzers-Common(依赖)

Lucene-Core(依赖)

在一个空的 Java 项目中测试这些库,我发现这些库对于分解日文文本非常有用和可靠。遗憾的是,当我尝试在我的应用程序中使用它们时,我的项目无法编译,我意识到我的库是在 Java 7U40 上构建的。

http://grepcode.com/static/data/html/repo1.maven.org$maven2/org.apache.lucene/lucene-analyzers-common/5.0.0/visualization.svg

查看 Stack Overflow 上的几篇文章后,似乎一致认为唯一的解决方案是找到一个用 Java 6 或更早版本编写的库。

搜索 Maven 存储库,我发现相同库的版本一直追溯到 2012 年。

查看每一个的依赖,发现用java6写的最新版本是2014年4月才发布的

http://grepcode.com/static/data/html/repo1.maven.org$maven2/org.apache.lucene/lucene-analyzers-common/4.7.2/visualization.svg

这是绕过 Android 的 jdk 6 限制的好方法吗?使用基于旧版本 Java 构建的过时软件似乎是一个相当临时的解决方案,我认为这种方法不会持续很长时间。

随着越来越多的库被编写成更现代的 Java 版本,这个问题只会变得更糟。

我个人还没有听说 Android 切换到 java 7 或 8(我是 Android 的新手),有谁知道是否有更可靠的方法解决这个问题?

根据此 post

Android 确实支持 jdk 7。 您需要更改项目的语言级别(并且可能更新 android sdk,因为它是最新的)

Is this a good method for getting around Android's jdk 6 limitation?

对于 "good" 的某些定义,是的,如果它运行。

As more libraries are being written in more modern versions of Java, this problem should only get worse.

仅适用于那些专注于传统 Java 环境的项目并尝试在 Android 上使用它们的开发人员。请注意,Lucene 并非设计用于移动设备;从历史上看,他们的重点一直放在服务器端 Java。如果来自 Lucene 的东西恰好在 Android 上工作,那很好,但是 Lucene 项目可能会或可能不会 Android 兼容性在他们的关注列表中占据重要位置。

Android 在语法方面支持更新版本的 Java 的开发。但是,对于 Java SE、Java EE 等,Android 的 class 库与 Java 的 class 库不同。这与 Java 版本没有本质关系,尽管因为 Android 是在 Java 6 是 Java 的当前版本时发布的,它的 class 库最接近类似于 Java SE 来自 Java 6.

渴望从头开始的人可以想象地创建这些库的变体,以匹配其当前功能集,但坚持 Android SDK 中存在的 classes。或者,渴望抓挠的人可以更直接地实现一个 Android 友好的日语形态分析器(而且,据我所知,有人已经拥有,因为我没有去寻找一个)。