Schwierigkeiten mit jpackage, wenn eine bestimmte (ich) Anwendung geschrieben wurdeJava

Java-Forum
Anonymous
 Schwierigkeiten mit jpackage, wenn eine bestimmte (ich) Anwendung geschrieben wurde

Post by Anonymous »

Ich übe und schreibe eine Bewerbung für die Arbeit mit Video. Ich muss das Video zuschneiden (und in Zukunft einen Frame von dem Moment im Video aufnehmen), aber selbst zu diesem Zeitpunkt kann ich die Anwendung nicht kompilieren.
jpackage erstellt und nicht gibt verschiedene Fehler aus, aber wenn ich es mit meiner anderen Anwendung versuche, funktioniert jpackage einwandfrei
package com.project;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.Slider;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import javafx.util.Duration;

import java.io.File;
import java.io.IOException;

public class HelloApplication extends Application {
MediaPlayer mediaPlayer;
MediaView mediaView;
Media media;
Label timeLabel;
File file;

private Duration startTime;
private Duration endTime;

@Override
public void start(Stage stage) throws IOException {

stage.setTitle("Hello!");
stage.setWidth(1000);
stage.setHeight(800);

VBox generalBox = new VBox();
HBox selecter = new HBox(10);
Button buttonSelect = new Button("Выбрать");
Label labelSelect = new Label("Не выбрано");

selecter.getChildren().addAll(buttonSelect, labelSelect);

VBox videoBox = new VBox();
videoBox.setStyle("-fx-border-color: black; -fx-border-width: 2px;");
VBox.setVgrow(videoBox, Priority.ALWAYS);

StackPane videos = new StackPane();
mediaView = new MediaView();
videos.getChildren().add(mediaView);
videoBox.getChildren().addAll(videos);
//--------------------------------
VBox controllerBox = new VBox();
controllerBox.setStyle("-fx-border-color: red; -fx-border-width: 2px;");

HBox startBox = new HBox(10);
startBox.setStyle("-fx-border-color: blue; -fx-border-width: 2px;");

Button start = new Button("►");
start.setDisable(true);

startBox.getChildren().addAll(start);

HBox timeLine = new HBox(10);
timeLine.setStyle("-fx-border-color: green; -fx-border-width: 2px;");

ProgressBar progressBar = new ProgressBar(0);
progressBar.setPrefWidth(500);
timeLabel = new Label("00:00:00");

timeLine.getChildren().addAll(progressBar, timeLabel);

HBox sliders = new HBox();
sliders.setStyle("-fx-border-color: yellow; -fx-border-width: 2px;");
Button leftOne = new Button("←");
leftOne.setDisable(true);
Button leftFive = new Button("←←");
leftFive.setDisable(true);

Slider slider = new Slider(0, 100, 0);
slider.setPrefWidth(500);
slider.setDisable(true);

Button rightOne = new Button("→");
rightOne.setDisable(true);
Button rightFive = new Button("→→");
rightFive.setDisable(true);

sliders.getChildren().addAll(leftFive, leftOne, slider, rightOne, rightFive);

HBox setterButton = new HBox(10);
setterButton.setStyle("-fx-border-color: black; -fx-border-width: 2px;");
Button startButton = new Button("Начало");
startButton.setDisable(true);
Label startLabel = new Label("00:00:00");

Button endButton = new Button("Конец");
endButton.setDisable(true);
Label endLabel = new Label("00:00:00");

Button pruning = new Button("Обрезать");
pruning.setDisable(true);

setterButton.getChildren().addAll(startButton, startLabel, endButton, endLabel, pruning);

controllerBox.getChildren().addAll(startBox, timeLine, sliders, setterButton);
//----------------------------
generalBox.getChildren().addAll(selecter, videoBox, controllerBox);

Scene scene = new Scene(generalBox);
stage.setScene(scene);
stage.show();

//Обработчик кнопок
buttonSelect.setOnAction(e -> {
FileChooser chooser = new FileChooser();
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Video Files", "*.mp4", "*.avi", "*.mkv"));
file = chooser.showOpenDialog(stage);

if(file != null){
if(mediaPlayer != null){
mediaPlayer.dispose();
}
media = new Media(file.toURI().toString());
mediaPlayer = new MediaPlayer(media);
TimerVideo videoTimer = new TimerVideo(mediaPlayer, timeLabel);

mediaPlayer.currentTimeProperty().addListener((observable, oldValue, newValue) -> {
Duration totalDuration = mediaPlayer.getTotalDuration();
if (totalDuration != null && !totalDuration.isUnknown()) {
double progress = newValue.toSeconds() / totalDuration.toSeconds();
progressBar.setProgress(progress);
}
});

mediaView.setMediaPlayer(mediaPlayer);
mediaView.setFitHeight(600);
mediaView.setFitWidth(300);
mediaView.setPreserveRatio(true);
labelSelect.setText("Выбрано "+ file.getAbsolutePath());
start.setDisable(false);
slider.setDisable(false);
startButton.setDisable(false);
endButton.setDisable(false);
pruning.setDisable(false);
rightFive.setDisable(false);
rightOne.setDisable(false);
leftFive.setDisable(false);
leftOne.setDisable(false);

mediaPlayer.currentTimeProperty().addListener((observable, oldValue, newValue) -> {
if (!slider.isValueChanging()) { // Проверяем, что пользователь не взаимодействует с слайдером
Duration totalDuration = mediaPlayer.getTotalDuration();
if (totalDuration != null && !totalDuration.isUnknown()) {
double progress = newValue.toSeconds() / totalDuration.toSeconds();
slider.setValue(progress * 100); // Обновляем слайдер (в процентах)
}
}
slider.valueChangingProperty().addListener((obs, wasChanging, isChanging) -> {
if (!isChanging) { // Когда пользователь отпускает слайдер
Duration totalDuration = mediaPlayer.getTotalDuration();
if (totalDuration != null) {
double newTime = slider.getValue() / 100 * totalDuration.toSeconds();
mediaPlayer.seek(Duration.seconds(newTime)); // Устанавливаем новую позицию воспроизведения
}
}
});

});

}

});
start.setOnAction(e -> {
if(mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING){
mediaPlayer.pause();
start.setText("❚❚");
}else{
mediaPlayer.play();
start.setText("►");
}

});
startButton.setOnAction(e ->{
if(mediaPlayer != null){
startTime = mediaPlayer.getCurrentTime();
startLabel.setText(formatDuration(startTime));
}
});

endButton.setOnAction(e -> {
if(mediaPlayer != null){
endTime = mediaPlayer.getCurrentTime();
endLabel.setText(formatDuration(endTime));
}
});

leftOne.setOnAction(e ->{
double value = slider.getValue();
Duration totalDuration = mediaPlayer.getTotalDuration();
if(totalDuration != null) {
slider.setValue(value - 1);
double timeValue = slider.getValue() / 100 * totalDuration.toSeconds();
mediaPlayer.seek(Duration.seconds(timeValue));
}
});
leftFive.setOnAction(e ->{
double value = slider.getValue();
Duration totalDuration = mediaPlayer.getTotalDuration();
if(totalDuration != null) {
slider.setValue(value - 5);
double timeValue = slider.getValue() / 100 * totalDuration.toSeconds();
mediaPlayer.seek(Duration.seconds(timeValue));
}
});
rightFive.setOnAction(e ->{
double value = slider.getValue();
Duration totalDuration = mediaPlayer.getTotalDuration();
if(totalDuration != null) {
slider.setValue(value + 5);
double timeValue = slider.getValue() / 100 * totalDuration.toSeconds();
mediaPlayer.seek(Duration.seconds(timeValue));
}
});
rightOne.setOnAction(e ->{
double value = slider.getValue();
Duration totalDuration = mediaPlayer.getTotalDuration();
if(totalDuration != null) {
slider.setValue(value + 1);
double timeValue = slider.getValue() / 100 * totalDuration.toSeconds();
mediaPlayer.seek(Duration.seconds(timeValue));
}
});

pruning.setOnAction(e -> {
try {
// Получаем startTime и endTime как Duration
double startInSeconds = startTime.toMillis() / 1000.0; // Преобразуем миллисекунды в секунды
double endInSeconds = endTime.toMillis() / 1000.0; // Преобразуем миллисекунды в секунды

// Преобразуем путь к файлу в URI и генерируем новое имя для обрезанного видео
String name = file.toURI().toString();
String newName = Randoms.Randomizer();

// Обрезаем видео с помощью VideoEditor
VideoEditor.trimVideo(name, newName, startInSeconds, endInSeconds);
} catch (IOException ex) {
ex.printStackTrace();
}
});
}

public static void main(String[] args) {
launch();
}
private String formatDuration(Duration duration) {
long minutes = (long) duration.toMinutes();
long seconds = (long) duration.toSeconds() % 60;
long milliseconds = (long) (duration.toMillis() % 1000);

// Форматируем строку в нужный формат: MM:SS:MS
return String.format("%02d:%02d:%03d", minutes, seconds, milliseconds);
}
}

type here modul-info

module com.project {
requires javafx.controls;
requires javafx.fxml;
requires javafx.media;

requires org.controlsfx.controls;
requires org.kordamp.bootstrapfx.core;

opens com.project to javafx.fxml;
exports com.project;
}

type here pom.xml


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0

com
Project
1.0-SNAPSHOT
Project


UTF-8
5.10.2




org.openjfx
javafx-controls
17.0.6


org.openjfx
javafx-media
17.0.6


org.openjfx
javafx-fxml
17.0.6


org.controlsfx
controlsfx
11.2.1


org.kordamp.bootstrapfx
bootstrapfx-core
0.4.0


org.junit.jupiter
junit-jupiter-api
${junit.version}
test


org.junit.jupiter
junit-jupiter-engine
${junit.version}
test






org.apache.maven.plugins
maven-compiler-plugin
3.13.0

17
17



org.openjfx
javafx-maven-plugin
0.0.8



default-cli

com.project/com.project.HelloApplication
app
app
app
true
true
true








java.io.IOException: Command [light.exe, -nologo, -spdb, -ext, WixUtilExtension, -out, C:\Users\valis\AppData\Local\Temp\jdk.jpackage5771419907643998597\images\win-exe.image\VideoSaver-0.0.1.msi, -sice:ICE27, -loc, C:\Users\valis\AppData\Local\Temp\jdk.jpackage5771419907643998597\config\MsiInstallerStrings_en.wxl, -cultures:en-us, C:\Users\valis\AppData\Local\Temp\jdk.jpackage5771419907643998597\wixobj\main.wixobj, C:\Users\valis\AppData\Local\Temp\jdk.jpackage5771419907643998597\wixobj\bundle.wixobj, C:\Users\valis\AppData\Local\Temp\jdk.jpackage5771419907643998597\wixobj\ui.wixobj] in C:\Users\valis\AppData\Local\Temp\jdk.jpackage5771419907643998597\images\win-msi.image\VideoSaver exited with 297

Zusätzlich: Ich habe gerade irgendwie das Anwendungsinstallationsprogramm zum Laufen gebracht und zusammengebaut. (Obwohl ich absolut nichts geändert habe. Aber mir ist ein Fehler aufgefallen und ich musste die Anwendung neu erstellen und wieder bekomme ich diesen Fehler 👆
codeIch habe verschiedene Versionen von JDK 14, 17 ausprobiert ( verschiedene Versionen auch)Wahrscheinlich liegt das Problem speziell in meinem Code

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post