【问题标题】:Problem with Java Language Levels in IntelliJ IDEAIntelliJ IDEA 中的 Java 语言级别问题
【发布时间】:2019-09-25 07:20:34
【问题描述】:

我刚刚开始使用 IntelliJ IDEA 在 Java 中使用一些简单的功能编写 Discord Bot。现在我确实有一个问题,我必须将语言级别 8 用于特定功能,但是当我这样做时,它给了我一个错误,以前的任何工作现在都不会工作。

代码:

package main;
import net.dv8tion.jda.core.AccountType;
import net.dv8tion.jda.core.JDABuilder;
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.events.guild.voice.GuildVoiceJoinEvent;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
import net.dv8tion.jda.core.entities.Role;
import net.dv8tion.jda.core.entities.User;
import java.util.List;
import javax.security.auth.login.LoginException;

public class Main extends ListenerAdapter {

public static void main(String[] args) throws LoginException {
    JDABuilder builder = new JDABuilder(AccountType.BOT);

    String token = "Token of bot which i dont want to show here";

    builder.setToken(token);

    builder.addEventListener(new main.Main());

    builder.buildAsync();
}

@Override
public void onMessageReceived(MessageReceivedEvent event) {
    System.out.println("We received a message from " +
            event.getAuthor().getName()+": "+ event.getMessage().getContentDisplay());

    if(event.getMessage().getContentRaw().equals("!ping"))
    {
        event.getChannel().sendMessage("Pong!").queue();
    }
}

@Override
public void onGuildVoiceJoin(GuildVoiceJoinEvent event) {
    Role role = event.getGuild().getRoleById("575318189467107328");

    List<Member> list = event.getGuild().getMembersWithRoles(role);

    for (int i = 0; i < list.size(); i++) {
        User supporter = list.get(i).getUser();

        supporter.openPrivateChannel().queue((channel)->{channel.sendMessage("Jemand braucht Hilfe").queue();});
    }
}
}

这是我迄今为止尝试做的。我的问题出现在“supporter.openPrivate .....”这一行中。

我希望当我将项目和模块语言级别更改为 8 时它会起作用,但它给了我这个错误: 错误:java:错误:不支持发布版本 5

当我不更改语言级别时,它会这样说: 语言级别“5”不支持 Lambda 表达式

【问题讨论】:

  • 你使用maven还是gradle?
  • 您是否可以使用不支持 Lambda 表达式的旧版 Java 进行构建?

标签: java discord-jda


【解决方案1】:

Maven 使用的默认 Java 版本是 Java 5 (1.5),所以我认为这是您的问题。

确保您拥有适合您尝试使用的语言级别的正确 JDK Java 8 JDK。根据指南设置环境变量并遵循安装过程。

之后,在您的 Maven 或 Gradle 设置文件(pom.xml 或 build.gradle)中,更改 java 发布版本,如下所示。

<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
</plugins>
</build>

检查您的编译器设置:设置/首选项 > 构建、执行、部署 > 编译器 > Java 编译器 > 将特定模块的目标字节码版本更改为 1.8

【讨论】:

  • 我认为默认是 Java 1.6。
  • 感谢您的快速答复!我现在安装了 Java JDK 1.8 并选择它并将你编写的代码粘贴到 maven 代码中,但现在我得到这个错误:错误:java:javacTask:源版本 8 需要目标版本 1.8
  • @JukingJoker 没问题。它解决了你的问题吗?
  • 不幸的是,不像我上面写的那样
  • 抱歉.. 您是否使用 Maven 来管理依赖项?如果没有,我会写一个不同的答案
猜你喜欢
  • 2013-07-16
  • 1970-01-01
  • 2016-04-16
  • 2015-04-09
  • 2015-01-18
  • 2014-08-04
  • 1970-01-01
相关资源
最近更新 更多