Я собираюсь создать исполняемый JAR-файл внутри Eclipse IDE. Все мои зависимости от Maven. В Eclipse я создаю графическое приложение JavaFX для рабочего стола.
Проблема в том, что когда я создаю исполняемый файл JAR. Я получил эту ошибку.
Ошибка очень ясна.
Jar export finished with problems. See details for additional information. Could not find main method from given launch configuration.
Но каков основной метод? Это метод public static void main(String[] args)
здесь?
Что мне делать, чтобы решить эту проблему?
package se.danielmartensson.start;
import java.util.Optional;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.ButtonType;
import javafx.stage.Stage;
import se.danielmartensson.concurrency.Measureing;
public class Main extends Application{
/*
* Start the start(Stage front)
*/
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage front) throws Exception {
front.setOnCloseRequest(e->{
e.consume();
askForClosing();
});
Parent root = FXMLLoader.load(getClass().getResource("/se/danielmartensson/fxml/front.fxml"));
Scene scene = new Scene(root);
front.setScene(scene);
front.setTitle("JUBSPlotter");
front.show();
}
private void askForClosing() {
Alert question = new Alert(AlertType.CONFIRMATION);
question.setTitle("Closing");
question.setHeaderText("Do you want to close?");
question.setResizable(false);
question.setContentText("Press OK to close.");
Optional<ButtonType> answer = question.showAndWait();
if (answer.get() == ButtonType.OK) {
Measureing.active = false;
Platform.exit();
}
}
}
@JoséPeda Спасибо. Теперь это слишком. Я думаю, что я начну с вашего ответа :)
В сообщении об ошибке говорится, что файл манифеста отсутствует, плагин maven-jar создаст его, если вы используете цель jar:jar.
@MartinSpamer Как? банка: цель банка? Команда? Куда вводить?
@MartinSpamer Хорошо! Я помещаю команду «jar:jar» в окно «Сборка Maven» и создаю ее. Но все же я не могу создать файл exe JAR.
Посмотрите в целевой папке, есть ли файл jar? Если есть, откройте его любым инструментом, который будет открывать zip-файлы, и посмотрите, содержит ли он файл manifest.mf. Убедитесь, что он содержит запись Main-Class с полным именем вашего основного класса.
@MartinSpamer Да. Теперь я вижу JAR-файл и могу его открыть :) Но, к сожалению, отсутствуют зависимости Maven. Таким образом, файл JAR полон ошибок.
@MartinSpamer Думаю, я буду использовать сборку Maven вместо jar:jar
Либо maven-assembly-plugin, либо maven-shade-plugin — правильный способ создать исполняемый файл jar.
@khmarbaise Так как же правильно? Я видел много разных способов создания файлов JAR с помощью maven. Вот почему, на мой взгляд, я думаю, что Maven - это своего рода беспорядок, потому что это не стандартный способ или единственный способ сделать это.
Вы должны использовать следующий плагин maven для создания исполняемого файла jar.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>
com.ddlab.rnd.App
</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Это для очень простого проекта, в котором вы хотите узнать, как создать исполняемый файл jar для запуска. Чтобы получить хорошее представление о том, как создать исполняемый файл jar, проверьте эту ссылку на github. https://github.com/debjava/runnableJar Если у вас есть другие библиотеки для использования как часть вашего приложения. Вы должны создать толстый файл jar. Чтобы создать толстый файл jar, вы должны использовать плагин Maven Shade. Найдите ниже ссылку на плагин maven shadow.
https://maven.apache.org/plugins/maven-shade-plugin/
Не сработало, если я добавлю этот код-текст в файл pom.xml.
Выложите свой pom.xml, позвольте мне проверить, я постараюсь добавить.
Похоже, что Maven перестал работать на меня. Не могу скачать зависимости...
Проверьте подключение к Интернету.
У меня есть интернет ;)
Измените основной класс, вы добавили вот так com.ddlab.rnd.App. Это из примера, измените свой класс, используя основной метод.
Ok! Теперь я изменил его на свой основной класс. Все еще не работает из-за того, что maven не загружается. не знаю бывает. Это сработало вчера.
Проверьте это в офц, возможно, maven не может подключиться, иначе опубликуйте ошибку maven.
Я проверю это, затем вернусь и дам ответ о результате.
Теперь Maven работает. Я просто удалил папку .m2. Но я все еще получаю ту же ошибку: «Экспорт Jar завершен с проблемами. См. Подробности для получения дополнительной информации. Не удалось найти основной метод из данной конфигурации запуска».
@DanielMårtensson Добавил этот плагин maven-jar, снова упакованный, я вижу, что мой основной класс определен в файле manifest.mf в META-INF в упакованном .jar, но все равно получаю ту же ошибку: не удалось найти или загрузить основной класс. Вы решили эту проблему? Какие-нибудь советы?
Взгляните на этот вопрос: Отсутствуют компоненты среды выполнения Maven Shade JavaFX. Просто Eclipse -> Export не сработает, и если вы уже используете Maven, лучшим вариантом будет плагин для тени. В качестве альтернативы, если ваш проект является модульным, вы можете использовать плагин JavaFX-Maven и
javafx:jlink
, как описано в здесь, раздел «Модульный с Maven».