gpt4 book ai didi

java.lang.UnsupportedOperationException 在 java.nio.ByteBuffer.array(ByteBuffer.java :959)

转载 作者:行者123 更新时间:2023-11-30 06:45:39 75 4
gpt4 key购买 nike

以下 Java 代码可以编译,但在运行时会出错:

# javac ByteBufTest.java
# java ByteBufTest
Exception in thread "main" java.lang.UnsupportedOperationException
at java.nio.ByteBuffer.array(ByteBuffer.java:959)
at ByteBufTest.<init>(ByteBufTest.java:12)
at ByteBufTest.main(ByteBufTest.java:33)
#

为什么会这样?

注意:接下来,我需要在JNI中使用mDirectBuffer,所以我必须使用ByteBuffer.allocateDirect(TEST_BUFFER_SIZE)函数。

ByteBufTest.java:

import java.nio.ByteBuffer;

public class ByteBufTest {

public static final int TEST_BUFFER_SIZE = 128;

private ByteBuffer mDirectBuffer;

public ByteBufTest() {
mDirectBuffer = ByteBuffer.allocateDirect(TEST_BUFFER_SIZE);
byte[] buf = mDirectBuffer.array();
buf[1]=100;
}

public void test() {

printBuffer("nativeInitDirectBuffer",mDirectBuffer.array());

}

private void printBuffer( String tag, byte[] buffer ) {
StringBuffer sBuffer = new StringBuffer();
for( int i=0; i<buffer.length; i++ ) {
sBuffer.append(buffer[i]);
sBuffer.append(" ");
}
//System.out.println(tag+sBuffer);
}

public static void main(String[] args) throws Exception {

ByteBufTest item = new ByteBufTest();
item.test();
}
}

最佳答案

这是预期的行为。 Javadoc 声明

throws UnsupportedOperationException - If this buffer is not backed by an accessible array

您应该尝试另一种方法或搜索另一种实现方式,例如

mDirectBuffer = ByteBuffer.wrap(new byte[TEST_BUFFER_SIZE]);

关于java.lang.UnsupportedOperationException 在 java.nio.ByteBuffer.array(ByteBuffer.java :959),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48582520/

75 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com