3

我发现的任何“在 Android 上使用 Scala”教程都只展示了制作一个简单的“Hello World”应用程序。有没有人真正成功地在现实生活中的 Android 应用程序中使用 Scala 库 jar?

我尝试在我的 Android 项目中使用 goose 库( https://github.com/GravityLabs/goose/ )。我从源代码构建 goose-2.1.22.jar 很好。将它插入到我的 Android 项目的 libs 目录中,并添加一些代码来测试会发生什么:

String url = "http://www.cnn.com/2010/POLITICS/08/13/democrats.social.security/index.html";
Configuration cfg = new Configuration();
Goose goose = new Goose(cfg);
com.gravity.goose.Article article = goose.extractContent(url);
String s = article.cleanedArticleText().toString();

该项目编译良好,没有抱怨。但是,当我尝试运行它时,出现异常:

java.lang.NoClassDefFoundError: com.gravity.goose.Configuration

在将 scala-for-android.jar 添加到“Scala for Android”项目的 libs 或来自最新稳定的 Scala 的 scala-library.jar 之后会好一点 - 然后我得到:

    java.lang.ExceptionInInitializerError
    at com.gravity.goose.Configuration.<init>(Configuration.scala:77)
    at com.hyperionics.ScalaTest.TestActivity$1.onClick(TestActivity.java:31)

有什么技巧可以让它发挥作用吗?


更多信息:崩溃位于 goose 的 Configuration.scala 文件中,正好在这一行:

var contentExtractor: ContentExtractor = StandardContentExtractor

经过一段时间的测试,我将Scala分发库目录中的所有jar添加到我的项目中,但没有区别,同样的崩溃。还在http://code.google.com/p/scalaforandroid/上找到了“Scala for Android”项目,并添加了它的罐子,而不是标准 Scala 发行版中的罐子,没有区别。为了编译我的项目并绕过错误“Android Dex: Too meny methods ...”,我不得不使用 DexGuard,再次使用 Proguard,我遇到了奇怪的错误。

任何有关如何使这项工作的提示将不胜感激!

4

0 回答 0