Другое

Как исправить ошибку 'main is never used' в JDK-25 VSCode Preview

Решение ошибки 'main is never used' при использовании JDK-25 preview features в VSCode. Узнайте правильную сигнатуру метода main и правильную конфигурацию для Java 25 preview features.

Как исправить ошибку “main is never used” при использовании JDK-25 с предварительными функциями в VSCode?

Я использую JDK-25 с VSCode и Maven для своей рабочей области и хочу использовать новые синтаксические функции. Однако я сталкиваюсь с сообщением об ошибке “main is never used”, несмотря на наличие метода main в моем коде.

Мой код HelloWorld выглядит так:

java
package org.rwth.progra;

public class Vs_code {

    void main() {
        IO.println("Hello World!");
    }
}

Код выполняется как ожидается при запуске с флагом --enable-preview, но сообщение об ошибке продолжает появляться.

Команда терминала, которую я использую:

'C:\Program Files\Java\jdk-25\bin\java.exe' '--enable-preview' '-XX:+ShowCodeDetailsInExceptionMessages' '-cp' 'C:\Users\moenc\Desktop\Programme\vs_code\target\classes' 'org.rwth.progra.Vs_code'

Я проверил, что использую JDK-25, проверив конфигурацию среды несколькими способами. Моя конфигурация VSCode settings.json включает:

json
"java.jdt.ls.java.home": "C:\\Program Files\\Java\\jdk-25",

"java.configuration.runtimes": [
    {
        "name": "JavaSE-25",
        "path": "C:\\Program Files\\Java\\jdk-25",
        "default": true
    }
],

"java.debug.settings.vmArgs": "--enable-preview",

"maven.terminal.customEnv": [
    {
        "name": "JAVA_HOME",
        "value": "C:\\Program Files\\Java\\jdk-25",
        "environmentVariable": "JAVA_HOME"
    }
],

"java.project.outputPath": "C:\\Program Files\\Java\\jdk-25"

Несмотря на эти конфигурации, ошибка “main is never used” продолжает появляться. Как можно решить эту проблему при использовании JDK-25 с предварительными функциями в VSCode?

Ошибка “main is never used” возникает из-за того, что в объявлении вашего метода main отсутствуют модификаторы public static и параметр String[] args. В Java метод main должен быть объявлен как public static void main(String[] args), чтобы быть распознанным как точка входа в программу.

Понимание ошибки “main is never used”

Ошибка “main is never used” в VSCode Java Language Server (JDT.LS) возникает, когда Java-компилятор не может распознать ваш метод как допустимую точку входа в приложение. Это происходит потому, что Java имеет строгие требования к тому, что constitutes метод main, который может служить точкой запуска программы.

Ваше текущее объявление:

java
void main() {
    IO.println("Hello World!");
}

Java Language Server ожидает найти метод с точной сигнатурой:

java
public static void main(String[] args)

Эта сигнатура определена в Java Language Specification и является стандартным способом пометить метод как точку входа в программу. Модификаторы public и static обязательны, а метод должен принимать параметр String[] args для получения аргументов командной строки.


Исправление объявления метода main

Чтобы устранить ошибку “main is never used”, вам нужно изменить ваш код HelloWorld, чтобы использовать правильную сигнатуру метода main:

java
package org.rwth.progra;

public class Vs_code {

    public static void main(String[] args) {
        IO.println("Hello World!");
    }
}

Ключевые изменения:

  1. Добавлен модификатор доступа public - делает метод доступным из любого места
  2. Добавлен модификатор static - позволяет вызывать метод без создания экземпляра
  3. Добавлен параметр String[] args - включает поддержку аргументов командной строки

Эта исправленная сигнатура будет распознана Java Language Server как допустимая точка входа, что устранит ошибку “main is never used” при сохранении той же функциональности.


Настройка VSCode для функций предварительного просмотра JDK-25

Ваши текущие настройки VSCode в основном правильны, но есть несколько корректировок, необходимых для обеспечения правильной поддержки функций предварительного просмотра:

json
{
    "java.jdt.ls.java.home": "C:\\Program Files\\Java\\jdk-25",
    
    "java.configuration.runtimes": [
        {
            "name": "JavaSE-25",
            "path": "C:\\Program Files\\Java\\jdk-25",
            "default": true
        }
    ],
    
    "java.debug.settings.vmArgs": "--enable-preview",
    
    "maven.terminal.customEnv": [
        {
            "name": "JAVA_HOME",
            "value": "C:\\Program Files\\Java\\jdk-25",
            "environmentVariable": "JAVA_HOME"
        }
    ],
    
    "java.project.outputPath": "C:\\Program Files\\Java\\vs_code\\target\\classes",
    
    "java.compile.nullAnalysis.mode": "automatic",
    "java.format.settings.url": "${workspaceFolder}/.vscode/eclipse-java-google-style.xml",
    "java.completion.overwrite": true
}

Важные дополнения:

  1. Исправлен java.project.outputPath для указания на вашу целевую директорию
  2. Добавлен режим анализа null для лучшего анализа кода
  3. Добавлены настройки форматирования, если используются руководства по стилю Google

Вам также может потребоваться добавить эти настройки для включения функций предварительного просмотра в Java Language Server:

json
{
    "java.compiler.release": "25",
    "java.recommendations.dependencyAnalysis": true
}

Обновления конфигурации Maven

Для проектов Maven вам нужно настроить maven-compiler-plugin для включения функций предварительного просмотра. Обновите ваш файл pom.xml:

xml
<properties>
    <maven.compiler.source>25</maven.compiler.source>
    <maven.compiler.target>25</maven.compiler.target>
    <maven.compiler.release>25</maven.compiler.release>
    <maven.compiler.compilerArgs>--enable-preview</maven.compiler.compilerArgs>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <configuration>
                <source>25</source>
                <target>25</target>
                <release>25</release>
                <compilerArgs>
                    <arg>--enable-preview</arg>
                </compilerArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

Эта конфигурация указывает Maven:

  • Использовать Java 25 как исходную, так и целевую версию
  • Включить функции предварительного просмотра во время компиляции
  • Применить те же настройки ко всем модулям в многомодульном проекте

Альтернативные решения и обходные пути

Если после внесения этих изменений вы все еще сталкиваетесь с проблемами, рассмотрите эти альтернативные подходы:

Метод 1: Использование задач VSCode

Создайте файл .vscode/tasks.json для запуска вашего Java-приложения с функциями предварительного просмотра:

json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run Java with Preview",
            "type": "shell",
            "command": "${workspaceFolder}/mvnw",
            "args": [
                "spring-boot:run",
                "-Dspring-boot.run.jvmArguments=--enable-preview"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared"
            },
            "problemMatcher": []
        }
    ]
}

Метод 2: Конфигурация Java Extension Pack

Убедитесь, что у вас установлена последняя версия Java Extension Pack:

  • Java Extension Pack
  • Maven for Java
  • Java Test Runner
  • Spring Boot Extension Pack

Затем выполните команду “Java: Clean Language Server Workspace”, чтобы перезагрузить Java Language Server.

Метод 3: Прямая конфигурация проекта

Вы также можете настроить функции предварительного просмотра непосредственно в рабочем пространстве VSCode:

json
{
    "java.project.referencedLibraries": [
        "lib/**/*.jar"
    ],
    "java.project.sourcePaths": [
        "src/main/java"
    ],
    "java.project.outputPath": "target/classes",
    "java.project.resourceFilters": [
        "-/node_modules",
        "-/.git",
        "-/target"
    ]
}

Тестирование вашей конфигурации

После внесения этих изменений выполните следующие шаги для проверки правильной работы всего:

  1. Очистите и пересоберите ваш проект:

    bash
    mvn clean compile
    
  2. Проверьте наличие ошибок компиляции:

    • Откройте терминал VSCode
    • Перейдите в корневую директорию вашего проекта
    • Выполните: mvn compile
    • Убедитесь, что не появляются ошибки компиляции
  3. Протестируйте запуск вашего приложения:

    bash
    java --enable-preview -cp target/classes org.rwth.progra.Vs_code
    
  4. Убедитесь, что VSCode распознает ваш метод main:

    • Откройте ваш .java файл
    • Найдите зеленую кнопку “Run” рядом с вашим методом main
    • Нажмите ее для тестирования запуска непосредственно из VSCode

Если все настроено правильно, ошибка “main is never used” должна исчезнуть, и вы сможете запускать ваши Java-приложения с функциями предварительного просмотра JDK-25 бесшовно.

Источники

  1. Java Language Specification - Main Method
  2. VSCode Java Extension Documentation
  3. Maven Compiler Plugin Configuration
  4. JDK 25 Preview Features
  5. Java Language Server Configuration
Авторы
Проверено модерацией
Модерация