【问题标题】:javax.* cannot be imported in my Android app?javax.* 无法在我的 Android 应用程序中导入?
【发布时间】:2013-05-24 02:10:57
【问题描述】:

我正在尝试在我的 android 应用程序中导入一些 javax.* 类,但我在 Android Studio 中不断收到编译器错误。 我使用的是 Ubuntu Linux 13.04。

这是我的导入:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
// Here are the imports I am having trouble with:
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.SourceDataLine;

当我尝试运行应用程序甚至编译活动 java 文件时,我收到以下错误:

Gradle: error: package javax.sound.sampled does not exist
Gradle: error: package javax.sound.sampled does not exist
Gradle: error: package javax.sound.sampled does not exist

我就是想不通这个问题。任何帮助都会很棒!

【问题讨论】:

  • 你检查你的类路径了吗?确保您已添加系统库。
  • 如何添加到系统库中?顺便说一句,感谢您的帮助。
  • 我不确定 Android 开发。但这里是来自 Eclipse 透视图的路径.... 右键单击​​ Project Explorer --> Build Path --> Configure Build Path --> Library 选项卡 --> Add Library 按钮 --> 选择 JRE System Library --> Next -- > 完成
  • 你想用音频类做什么?
  • 看起来你想做的事情可以使用 Android AudioTrack 类来实现。请参阅:stackoverflow.com/questions/10158409/… 和 stackoverflow.com/questions/11436472/…

标签: java android gradle javax.sound.sampled


【解决方案1】:

如果您从 Red Hat Developer Program(免费会员)下载 OpenJDK,您可以找到整个 OpenJDK 的 .java 源文件,包括 javax.sound.sampled。我能够使用 OpenJDK8 调试我的 Android 应用程序。

请注意,并非所有 OpenJDK8 功能都在 Android 中可用,因此仅包含您需要的类。欲了解更多信息,请参阅https://developer.android.com/studio/write/java8-support.html

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我已经通过下载 OpenJDK 的源(例如,从这里:http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/9b8c96f96a0f/src/share/classes/javax/sound)并将所需的包导出到 *.jar 文件中以将该文件包含到 android 应用程序中来解决它。对我来说效果很好。

    【讨论】:

      【解决方案3】:

      我已经在 Android 中解决 javax.sound 问题两天了。我采取了简单的方法,因为使用 javax.sound 意味着创建一个我需要的库的 jar 文件,如果它们下面的 JNI 中有 C 代码,我将不得不将它移植到 arm。或者我可以使用一个 arm Linux dist 并将我需要的 mp3 转换为 wav 转换到 JNI 中。您可以在 Android 中使用常规的 jar 文件。我使用来自第三方的现成 FTP 库用于 FTP Juju。我的 mp3 不是很大。所以我只是将它们转换为 res/raw 中的 wav。但是您可以使用上述解决方案。

      【讨论】:

        【解决方案4】:

        请注意,当您运行 Android 应用程序时:您不会在标准 JVM/JDK 上运行/编译它,甚至不会执行 java 字节码。 Google 选择 java 语言(或至少它的一个子集)作为 Android 开发的语言,但它只是语言。

        最后编译出来的java代码不是java字节码,而是dalvik字节码。 (没有 .class 文件,只有 .dex 文件)

        因此,在进行 Android 开发时:您不能使用完整的 JavaSE API:您仅限于 dalvik VM 支持的 API(可用 here)。

        (请注意,当您浏览此 API 时,请注意页面右上角的版本:在 API 级别 X 中添加。它会通知您支持该类的 Android-API 版本或方法)

        【讨论】:

        • 顺便说一句,您提到“您不能使用完整的 JavaSE API”。但是,我相信这里有问题的依赖是 JEE,而不是 Java SE。
        • 我希望这个答案能说明如何让 javax 工作,而不是简单地说明它为什么不能工作。我们已经知道输入 import javax 不起作用,所以这里没有新信息。在我看来,必须有一个解决方法或替代解决方案。
        【解决方案5】:

        这些类不包含在 Android 库中。您必须使用 Android 特定的声音 API。见:http://developer.android.com/reference/android/media/package-summary.html

        【讨论】:

        • 我之前在我的应用程序中使用过其他 java 类。只是javax.*吗?
        • 好像是专门不包括javax.sound.sampled包。
        猜你喜欢
        • 1970-01-01
        • 2013-05-17
        • 1970-01-01
        • 2014-05-31
        • 2018-05-24
        • 1970-01-01
        • 2016-09-24
        • 1970-01-01
        • 2017-04-23
        相关资源
        最近更新 更多