所以我是一个使用 java 代理注入的项目的开发人员。但应该注意的是,此错误发生在调用 main 之后。
对于大多数用户来说,一切都很好,但是有些人遇到了java.nio.IntBuffer没有加载clear()(继承自Buffer)的问题。
错误:
java.lang.NoSuchMethodError: java.nio.IntBuffer.clear()Ljava/nio/IntBuffer;
然后堆栈跟踪,它只是在我们的代码中第一次调用清晰()。
造成这种情况的原因是什么(除了Java在运行时无法加载的事实之外),我该如何解决这个问题?
这是对NoSuchMethodError的一个很好的解释。
https://www.codenong.com/js8f219d981aa9/
注意:flip()方法也有这个问题。
如果你使用 jdk9 编译并在 jdk8 上运行,则需要强制转换。在我的项目中,我为这个问题创建了 2 个实用程序方法:
public static void clear(Buffer buffer)
{
buffer.clear();
}
public static void flip(Buffer buffer)
{
buffer.flip();
}
感谢Janez Kuhar的评论,并做了一些挖掘,这是由JDK9破坏兼容性造成的。在我们的代码中,我们调用IntBuffer.clear()并期望它返回Buffer,但在JDK9中,他们让所有Buffer方法都返回子类型(即ByteBuffer或IntBuffer,而不仅仅是Buffer),因此运行JRE8的人(我们的大多数用户群)会遇到NoSuch手方法错误,因为返回类型不兼容,必须像这样转换
someMethod(((Buffer)intBuffer).clear());
问题内容: 我有这样的事情: 如何清除缓冲区? 编辑:我尝试了以下方法,但由于某些原因它不起作用: 问题答案: 您无法明确清除扫描仪的缓冲区。在内部,它可能会在读取令牌后清除缓冲区,但这是porgrammers无法实现的实现细节。
问题内容: 我已经看过一些关于这个的话题,但是它似乎并不能解决我的问题。我正在运行linux,当我使用raw_input()时,在每个之间都有一个暂停,它将获取我之前按下的数据,这是一个示例: 如果我在5秒钟内按任意键,然后按Enter,则另外两个原始输入将采用该输入。我希望能够刷新数据并提示用户。 谢谢。 问题答案: 对于Unix,您可以使用termios.tcflush termios.tcf
问题内容: 我的一位同事提出了在运行时生成协议缓冲区类的想法。含义: 有C ++服务器应用程序和Java客户端应用程序通过TCP / IP通过协议缓冲区消息进行通信。 C ++应用程序在不同版本中可能具有不同的架构,并且不一定向后兼容 有与此服务器通信的Java应用程序,该应用程序应支持所有可能的服务器版本。 这个想法是服务器将协议缓冲区的定义作为初始握手的一部分发送,并且Java应用程序在运行时
htcacheclean可以用于将mod_disk_cache的磁盘缓冲区占用的空间保持在一个合理的水平。这个工具可以手动运行也可以作为后台守护进程运行。当作为守护进程运行的时候,它将每隔一段时间检查一次缓冲区所在目录并进行清理。你可以通过 TERM 或 INT 信号停止守护进程的清理操作。 语法 htcacheclean [ -D ] [ -v ] [ -t ] [ -r ] [ -n ] -p
我正在使用getline(cin.getline())从cin中获取一个字符串,并发现一个特殊情况的问题。如果用户输入的字符比stream size参数多(在本例中为50),cin缓冲区会保存它们并将它们放入下一个cin调用中。如果我使用cin.clear()和cin.ignore(),并且用户输入的字符比stream size参数少,那么程序会等待用户再次按Enter,然后继续运行。所以我使用s
本文向大家介绍WebGL:防止在HTML5中清除颜色缓冲区,包括了WebGL:防止在HTML5中清除颜色缓冲区的使用技巧和注意事项,需要的朋友参考一下 即使通过代码删除颜色: 屏幕在下一个绘制周期开始时清除。 要创建WebGLRenderingContext,可以保留以前的绘图缓冲区。 默认值为serveDrawingBuffer:通过将此属性设置为false,可以轻松保存以前的图形