当前位置: 首页 > 知识库问答 >
问题:

为什么我的java程序在heroku中使用JDA时抛出java.lang.NoSuchmetodError?

薛华容
2023-03-14

我在Heroku上托管了这个java discordbot,升级到最新版本的JDA后,我不得不将onGuildMessageRec的更改为onMessageRec的。当从intellij运行我的机器人时,它可以毫无问题地工作,但从Heroku执行它时,它会给我“java.lang.NoSuchmetodError:'net.dv8tion.jda.api.entities.AudioChannelnet.dv8tion.jda.api.entities.GuildVoiceState.getChannel()”每次我在Discord上发送消息。导致此错误的代码是:AudioChannel audioChannel=e.get成员(). getVoiceState(). getChannel();onMessageReception内部。

我个人觉得maven可能向Heroku导入了错误的版本,但我没有任何方法来检查,所以这里是我的pom。xml:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.html" target="_blank">apache.org/xsd/maven-4.0.0.xsd">
    <build>
        <plugins>
            <plugin>
                <groupId>com.heroku.sdk</groupId>
                <artifactId>heroku-maven-plugin</artifactId>
                <version>3.0.3</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <release>17</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.furetto126.furettobot.FurettoBot</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.furetto126.furettobot</groupId>
    <artifactId>FurettoBot</artifactId>
    <version>1.1</version>

    <properties>
        <maven.compiler.release>17</maven.compiler.release>
    </properties>

    <repositories>
        <repository>
            <id>dv8tion</id>
            <name>m2-dv8tion</name>
            <url>https://m2.dv8tion.net/releases</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>net.dv8tion</groupId>
            <artifactId>JDA</artifactId>
            <version>5.0.0-alpha.12</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.sedmelluq</groupId>
            <artifactId>lavaplayer</artifactId>
            <version>1.3.77</version>
        </dependency>
    </dependencies>
</project>

共有1个答案

郎经纶
2023-03-14

根据我的经验,java。lang.NoSuchMethodError通常意味着存在jar冲突,这意味着有多个jar文件包含某个类。您可以简单地双击idea中的shift,然后搜索特定的类名,以检查jar中是否包含多个特定的类

 类似资料:
  • 我的代码出现错误: 我的示例的完整代码如下:

  • 问题内容: 运行此命令时: 响应为: 这对我来说真是太棒了。我本以为这会带来编译时错误。 为什么我可以在Java中抛出null,为什么将其转换为NullPointerException? (实际上,鉴于我抛出的是null,因此我不知道这是否是“ upcast”) 除了一个非常愚蠢的面试问题(请没人在面试中问这个问题)之外,我看不到任何理由。也许您想被解雇,但这就是…我的意思是,为什么还会有人呢?

  • 错误:命令错误,退出状态为1:Command://app/.heroku/python/bin/python/app/.heroku/python/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel/tmp/tmp3b4z4ntu cwd://tmp/pip-i

  • 问题内容: 直接的答案是因为s接口被指定为不会引发异常。但是为什么呢? 或换句话说:我必须依赖可以引发异常的函数。从理论上讲,这不应该发生。但是,如果发生这种情况,我希望它脱离我正在使用的整个函数(在中)。即我希望它的行为就像发生未处理的异常一样。 似乎这不可能以一种显而易见的自然方式进行(因为如果接口说它不能抛出异常,就不会)。 我该如何解决?用丑陋的try / catch并打印出异常,并希望我

  • 问题内容: 将字符串解析为字节时出现异常 问题答案: 这是因为默认的parse方法要求使用十进制格式的数字来解析十六进制数字,请使用以下parse: 其中16是解析的基础。 至于您的评论,您是对的。字节的最大值为0x7F。因此,您可以将其解析为并执行二进制与操作以获得LSB,即您的字节:

  • 问题内容: 因此,我认为我对Java中的异常处理有很好的基本了解,但是最近我正在阅读一些使我有些困惑和怀疑的代码。我要在这里解决的主要疑问是,何时一个人使用时会抛出如下所示的Java方法声明: 通过阅读一些类似的文章,我收集到的 引发信息 被用作一种声明, 表明 可以在方法执行期间引发 SomeException 。 我的困惑来自一些看起来像这样的代码: 在此示例中,您是否有任何理由要使用 抛出