Мне не удалось создать исполняемый файл 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, но я не знаю. Что касается ошибки «Не удалось найти или загрузить основной класс» Понятия не имею, так как много чего перепробовал.
Заранее благодарю