Arhn - архитектура программирования

Как исправить Не удалось найти или загрузить ошибку основного класса при создании JAR с IntelliJ?

Я пытаюсь создать банку из своего проекта Maven с помощью IntelliJ, но получаю Error: Could not find or load main class при запуске банки.

У меня есть 3 класса (один содержит мой основной метод и простую печать, 2 других пусты). У меня есть файл pom с одной зависимостью:

<build>
    <plugins>

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

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <archive>
                    <manifest>

                        <mainClass>MyMainClass</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

    </plugins>
</build>

<repositories>
    <repository>
        <id>red-hat</id>
        <url>https://maven.repository.redhat.com/earlyaccess/all/</url>
    </repository>
</repositories>


<dependencies>
    <dependency>
        <groupId>org.apache.beam</groupId>
        <artifactId>beam-sdks-java-io-google-cloud-platform</artifactId>
        <version>2.22.0</version>
    </dependency>
</dependencies>

Я пытался получить помощь от здесь, здесь и здесь, но ничего не помогает. Скорее всего, мне не хватает базового понимания того, как строится банка. Это структура проекта. Любая помощь будет оценена по достоинству.

Это структура моего проекта


  • Вы создаете банку с помощью Maven или артефакта IntelliJ IDEA? Что внутри финальной банки, вы видите там классы и правильный файл манифеста? 13.07.2020
  • я использую артефакт IntelliJ. исследуя JAR с помощью jar tf .\KafkaToBigQueryJAR.jar, я вижу, что манифест находится там вместе с файлами классов META-INF/MANIFEST.MF KafkaToBigQuery.class KafkaToBigQueryOptions.class META-INF/ Utils.class 13.07.2020
  • Что внутри META-INF/MANIFEST.MF? Как вы настроили артефакт? См. jetbrains.com/help/idea/artifacts.html. Вам может потребоваться указать расположение существующего файла манифеста или указать основной класс в автоматически сгенерированном манифесте. Поскольку вы создаете артефакт с помощью IntelliJ IDEA, ваша конфигурация Maven вообще не имеет значения, а ваши теги вопросов с содержимым pom.xml просто сбивают с толку пользователей, пытающихся помочь вам здесь. Чтобы создать артефакт с помощью Maven, запустите цель package в окне инструмента Maven, он создаст другую банку, которая может вам подойти. 13.07.2020
  • Спасибо за ответ. Я могу создать простую банку, которая работает, когда у меня нет зависимости от maven. я получаю сообщение об ошибке, как только добавляю зависимость в свой pom, поэтому я решил, что это тоже связано с maven 13.07.2020
  • См. stackoverflow.com/a/42200519/104891 и stackoverflow.com/a/45169655/104891. Jar-зависимости с цифровыми подписями сломают окончательный артефакт. 13.07.2020

Ответы:


1

просто замените <mainClass>MyMainClass</mainClass> фактическим основным классом из пути к классам.

13.07.2020
  • это то, что у меня уже есть. я просто замаскировал это. Я пробовал <mainClass>KafkaToBigQuery</mainClass>, <mainClass>target.classes.KafkaToBigQuery</mainClass> и <mainClass>classes.KafkaToBigQuery</mainClass> ничего не изменилось 13.07.2020
  • из-за вашей маскировки очень трудно ответить на вопрос. попробуйте ‹mainClass›YourPackageName.KafkaToBigQuery‹/mainClass› 13.07.2020
  • я пробовал <mainClass>main.java.KafkaToBigQuery</mainClass> и те, о которых я упоминал в предыдущем комментарии. Моя структура пакета просто по умолчанию 13.07.2020
  • общие имена пакетов похожи на ..: com.myproject.app 13.07.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..