Проблема с уровнями языка Java в IntelliJ IDEA - PullRequest
1 голос
/ 07 мая 2019

Я только начал программировать Discord Bot с некоторыми простыми функциями в Java с IntelliJ IDEA.Теперь у меня есть проблема с тем, что я должен использовать языковой уровень 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'

1 Ответ

1 голос
/ 07 мая 2019

Версия Java по умолчанию, используемая Maven, - это 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 для этого конкретного модуля

...