线程 "main" java.lang.ClassNotFoundException 中的异常:sample.Main - 为什么?

Exception in thread "main" java.lang.ClassNotFoundException: sample.Main - why?

我在编译时遇到这个错误,我不知道为什么。错误日志也没有太多说明。已经搜索了其他答案,它们都与我没有使用或推荐的框架有关,以确保文件名与 class 的名称相同(是的,都命名为 "FolderSyncer4" ).代码参考:

FolderSyncer4.java

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;
import java.io.*;
import java.nio.file.Path;
import java.util.LinkedList;

public class FolderSyncer4 extends Application {

    final String FOLDER_SYNCER = "FolderSyncer";

    Stage theStage;

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


    @Override
    public void start(Stage primaryStage) throws Exception {
        theStage = primaryStage;

        //TODO do the FXML stuff, hope this works
        //Parent root = FXMLLoader.load(getClass().getResource("FolderSyncerMainWindow.fxml"));

        //Display the "Selecting" scene at first
        theStage.setTitle(FOLDER_SYNCER);
        theStage.show();
    }
}

FolderSyncerMainWindowController.java

package sample;

import javafx.scene.control.Button;
import javafx.scene.control.Label;

import java.io.IOException;

public class FolderSyncerMainWindowController {

    final String FOLDER_SYNCER = "FolderSyncer";
    final String BROWSE = "Browse";
    final String SOURCE = "Source...";
    final String TARGET = "Target...";
    final String COMPARE = "Compare";
    final String CANCEL = "Cancel";
    final String SYNCHRONIZE = "Synchronize";
    final String COMPARING = "Comparing, this may take several minutes.";
    final String SYNCHRONIZING = "Synchronizing, this may take several minutes.";
    final String DONE = "Done.";

    public Label sourceLabel = new Label(SOURCE);

}

FolderSyncerMainWindow.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.effect.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>

<BorderPane prefHeight="574.0" prefWidth="687.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="sample.FolderSyncerMainWindowController">
   <padding>
      <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" />
   </padding>
   <left>
      <HBox prefHeight="492.0" prefWidth="523.0" spacing="8.0" BorderPane.alignment="CENTER">
         <children>
            <TreeView prefHeight="509.0" prefWidth="321.0" HBox.hgrow="ALWAYS" />
            <TreeView prefHeight="509.0" prefWidth="324.0" HBox.hgrow="ALWAYS" />
         </children>
      </HBox>
   </left>
   <top>
      <VBox prefHeight="47.0" prefWidth="702.0" spacing="8.0" BorderPane.alignment="CENTER">
         <children>
            <HBox prefHeight="8.0" prefWidth="702.0" spacing="8.0">
               <children>
                  <Label fx:id="sourceLabel" prefHeight="17.0" prefWidth="44.0">
                     <HBox.margin>
                        <Insets />
                     </HBox.margin>
                  </Label>
                  <TextField editable="false" prefHeight="25.0" prefWidth="543.0" HBox.hgrow="ALWAYS" />
                  <Button mnemonicParsing="false" prefHeight="25.0" prefWidth="61.0" text="Browse" />
               </children>
               <VBox.margin>
                  <Insets />
               </VBox.margin>
            </HBox>
            <HBox prefHeight="45.0" prefWidth="702.0" spacing="8.0">
               <children>
                  <Label prefHeight="17.0" prefWidth="44.0" text="Target" />
                  <TextField editable="false" prefHeight="25.0" prefWidth="543.0" HBox.hgrow="ALWAYS" />
                  <Button mnemonicParsing="false" prefHeight="25.0" prefWidth="61.0" text="Browse" />
               </children>
            </HBox>
         </children>
         <BorderPane.margin>
            <Insets bottom="8.0" />
         </BorderPane.margin>
      </VBox>
   </top>
   <right>
      <GridPane prefHeight="492.0" prefWidth="140.0" BorderPane.alignment="CENTER">
        <columnConstraints>
          <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" />
        </columnConstraints>
        <rowConstraints>
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <effect>
            <DropShadow />
         </effect>
         <BorderPane.margin>
            <Insets left="8.0" />
         </BorderPane.margin>
         <children>
            <Button fx:id="compareButton" mnemonicParsing="false" text="Compare" />
            <Button fx:id="synchronizeButton" mnemonicParsing="false"  text="Synchronize" GridPane.rowIndex="1" />
         </children>
      </GridPane>
   </right>
</BorderPane>

错误日志:

Exception in thread "main" java.lang.ClassNotFoundException: sample.Main
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)

Process finished with exit code 1

java -jar xxx.jar sample.FolderSyncer4 应该可以。您似乎改用 sample.Main