3

昨天我尝试从 3.3.2.Final-SNAPSHOT 升级到最新版本。但是,由于以下错误,它在 Android 上失败:

  • /AndroidRuntime(720):致命例外:主要 E/AndroidRuntime(720):java.lang.NoClassDefFoundError:java.util.concurrent.LinkedTransferQueue E/AndroidRuntime(720):在 org.jboss.netty.util.internal.QueueFactory。创建队列(QueueFactory.java:48)

事实证明,在 Android(这是 2.3)上,DetectionUtil.javaVersion() 返回 7,因为 Deflater 类包含字段 SYNC_FLUSH。以下是所有字段 Deflater.getDeclaredFields()。

04-25 08:08:51.305: I/System.out(25674): [public static final int java.util.zip.Deflater.BEST_COMPRESSION, public static final int java.util.zip.Deflater.BEST_SPEED, public static final int java.util.zip.Deflater.DEFAULT_COMPRESSION, public static final int java.util.zip.Deflater.DEFAULT_STRATEGY, public static final int java.util.zip.Deflater.DEFLATED, public static final int java.util.zip.Deflater .FILTERED,私有静态最终 int java.util.zip.Deflater.FINISH,公共静态最终 int java.util.zip.Deflater.FULL_FLUSH,公共静态最终 int java.util.zip.Deflater.HUFFMAN_ONLY,公共静态最终 int java .util.zip.Deflater.NO_COMPRESSION, public static final int java.util.zip.Deflater.NO_FLUSH, private static final [B java.util.zip.Deflater.STUB_INPUT_BUFFER, public static final int java.util.zip.Deflater. SYNC_FLUSH,私有 [B java.util.zip。Deflater.inputBuffer,私有布尔 java.util.zip.Deflater.finished,私有长 java.util.zip.Deflater.streamHandle,私有 int java.util.zip.Deflater.inLength,私有 int java.util.zip.Deflater。 inRead,私有 int java.util.zip.Deflater.compressLevel,私有 int java.util.zip.Deflater.strategy,私有 int java.util.zip.Deflater.flushParm]

有没有其他方法可以解决这个问题,以便它可以在 Android 平台上运行?我还没有调查过(还......)。如果 android 是一个应该支持的平台,也许我们还可以检查 android 特定的类?

可以将类似这样的内容添加到 DetectionUtil 中的 int javaVersion0() 中:

try {
        Class.forName("android.app.Application");
        return 5;
    } catch (ClassNotFoundException e) {
        //Ignore
    }

亲切的问候/约翰拉斯克

4

1 回答 1

2

请在 netty 的问题跟踪器中打开一个问题。我将确保我们在下周发布的下一个版本中处理它。

请参阅此处的问题跟踪器 [1]。

[1] https://github.com/netty/netty/issues

于 2012-04-25T08:45:15.833 回答