为什么 heroku 给我这个“不兼容的类型”错误?

问题描述

我正在尝试在 Heroku.com 上部署我的 Discord 机器人,但是我收到一个奇怪的错误... 这是抛出错误的类的代码:

package main.Events.lavaplayer;

import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
import com.sedmelluq.discord.lavaplayer.track.playback.MutableAudioFrame;
import net.dv8tion.jda.api.audio.AudioSendHandler;
import org.jetbrains.annotations.Nullable;

import java.nio.ByteBuffer;

public class AudioPlayerSendHandler implements AudioSendHandler {
    private final AudioPlayer audioPlayer;
    private final ByteBuffer buffer;
    private final MutableAudioFrame frame;

    public AudioPlayerSendHandler(AudioPlayer audioPlayer) {
        this.audioPlayer = audioPlayer;
        this.buffer = ByteBuffer.allocate(1024);
        this.frame = new MutableAudioFrame();
        this.frame.setBuffer(buffer);
    }

    @Override
    public boolean canProvide() {
        return this.audioPlayer.provide(this.frame);
    }

    @Nullable
    @Override
    public ByteBuffer provide20MsAudio() {
        return this.buffer.flip();
    }

    @Override
    public boolean isOpus() {
        return true;
    }
}

这段代码在用 Intellij 编译时没有给我任何问题,但是当我尝试将它部署到 Heroku 时,他们给了我这个错误:

错误:类型不兼容:java.nio.Buffer 无法转换为@org.jetbrains.annotations.Nullable java.nio.ByteBuffer 返回 this.buffer.flip();

解决方法

flip 返回 Buffer 而不是 ByteBuffer,因此需要进行强制转换

public ByteBuffer provide20MsAudio() {
    return (ByteBuffer) buffer.flip();
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...