java - 尝试克服Android Java jdk限制

标签 java android lucene

因此,我正在尝试开发一款 Android 应用程序,它可以读取日语文本的文本文件,并向读者提供有关所使用的词汇和语法的深刻信息。

为此,我需要一个日语形态分析器将非空格文本解析为单个单词。

我从 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 年。

检查每个版本的依赖关系,我发现用 java 6 编写的最新版本是在 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 新手),有谁知道是否有更可靠的方法来解决这个问题?

最佳答案

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

对于“好”的某些定义,是的,如果它运行的话。

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 进行开发。然而,Android 的类库与 Java SE、Java EE 等的 Java 类库不同。这本质上与 Java 版本无关,尽管由于 Android 是在 Java 6 是当前 Java 版本时发布的,所以它的类库与 Java 6 中的 Java SE 最相似。

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

关于java - 尝试克服Android Java jdk限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30174964/

相关文章:

android - 如何将自定义布局添加到 Arrayadapter?

java - solrj:如何通过索引中的多值字段存储和检索 List<POJO>

search - 在哪种情况下,我们需要在Lucene文档中将Field.Store和Field.Index都设置为 `NO`?

java - 监听 RFID 扫描仪和打印数据

java - 使用 GSON 序列化对象

android - Gradle 同步错误 :Configuration with name 'default' not found

android - 真正的android双显权限问题

java - 如果在任何写入之前打开,为什么 Lucene DirectoryReader 看不到 IndexWriter 所做的任何更改?

java - 如何使用 Java 获取 Parquet 文件大小和行数?

java - 如何使用属性作为键将对象列表转换为 JSON 对象?