Невозможно создать и запустить файл JAR из PowerShell - PullRequest
0 голосов
/ 29 мая 2020

Мне не удалось создать исполняемый файл JAR с помощью PowerShell. Продолжает появляться ошибка: «Недопустимое поле заголовка» или «Не удалось найти или загрузить основной класс». Я успешно запустил код из Eclipse, поэтому знаю, что это не код (хотя я открыт для иронии). Вот как выглядит мой каталог:

... Documents / Java / drawingFX

внутри DrawingFX - это файлы «Drawing. java», «JIGraphicsUtility. java» и «Manifest.txt»

Теперь я компилирую файл. java, используя следующую команду в powershell в каталоге drawingFX, где находятся файлы:

PS C:\Users\colin\Documents\Java\drawingFX> javac --module-path "C:\Program Files\Java\jdk-14.0.1\package\javafx-sdk-14.0.1\lib" --add-modules javafx.controls,javafx.fxml Drawing.java JIGraphicsUtility.java

«путь к модулю» часть состоит в том, чтобы включить некоторые файлы JAR для материала пакета javafx. Теперь, когда я скомпилировал, в drawingFX есть еще два файла: «Drawing.class» и «JIGraphicsUtility.class». Теперь я пытаюсь создать файл JAR (я упомяну, что «main» находится в Drawing.class »), используя следующую команду в PowerShell в каталоге drawingFX:

PS C:\Users\colin\Documents\Java\drawingFX> jar cvfm run.jar Manifest.txt *.class

Я получаю« недопустимый заголовок. field "error. Теперь я включу код для всех файлов, а затем буду включать каталоги моего CLASSPATH.

Ниже приведен код для« Drawing. java »:

/*
file:: Drawing.java
author:: Colin Rubow
last date modified:: 5/27/2020
description:: this program will play with the drawing javafx application
*/

package drawingFX;

import javafx.application.Application;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

import java.util.Random;

public class Drawing extends Application
{
  @Override
  public void start( Stage stage )
  {
    final int WIDTH = 700;
    final int HEIGHT = 400;

    GraphicsContext gc = JIGraphicsUtility.setUpGraphics( stage, "Drawing", WIDTH, HEIGHT );

    gc.strokeLine( 100, 125, 100, 300 );
    gc.setStroke( Color.RED );
    gc.setLineWidth( 5 );
    gc.strokeLine( 300, 75, 550, 75);

    Random rand = new Random();
    int red = rand.nextInt( 0xFF );
    int green = rand.nextInt ( 0xFF );
    int blue = rand.nextInt ( 0xff );
    Color randomColor = Color.rgb( red, green, blue );
    gc.setStroke( randomColor );

    gc.strokeLine( 0, 0, WIDTH - 1, HEIGHT - 1 );
  }

  public static void main( String [] args )
  {
    launch( args );
  }
}

Следующий код взят из «JIGraphicsUtility. java»:

/*

*/

package drawingFX;

import javafx.scene.Group;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class JIGraphicsUtility
{
  public static GraphicsContext setUpGraphics( Stage stage, String title, int height, int width )
  {
    stage.setTitle( title );
    Canvas canvas = new Canvas( height, width );
    GraphicsContext gc = canvas.getGraphicsContext2D( );
    Group root = new Group( canvas );
    stage.setScene( new Scene( root ) );
    stage.show( );
    return gc;
  }
}

Следующий код взят из «Manifest.txt»:

Main-Class: drawingFX.Drawing

Вот что находится в CLASSPATH:

C:\Program Files\Java\jdk-14.0.1\package\javafx-sdk-14.0.1\lib
C:\Users\colin\Documents\Java\drawingFX
C:\Users\colin\Documents\Java

Я считаю, что текущая ошибка «недопустимое поле заголовка» связана с файлом Manifest.txt, но я не знаю. Что касается ошибки «Не удалось найти или загрузить основной класс» Понятия не имею, так как много чего перепробовал.

Заранее благодарю

...