Java:如何解决 'Could not load main class' 的错误

Java: How to solve error for 'Could not load main class'

尽管这个问题有很多版本,它仍然碰巧没有一个正确或直接的答案。

我有同样的问题,无法执行我的项目。

我的桌面上有我的文件,它叫做

login.java

我有 运行

javac Login.java

现在有两个 class 文件,分别命名为 Login.classLogin.class

我收到错误 Could not find or load main class Login.java

看在上帝的份上,有人可以为 java 新手以有条不紊的方式回答这个问题。

我会很乐意跟进并让您知道每一步会发生什么。

亲切的问候。

这是代码

package login;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Login extends Application {

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

    @Override
    public void start(Stage primaryStage) {
    primaryStage.setTitle("JavaFX Welcome");
    GridPane grid = new GridPane();
    grid.setAlignment(Pos.CENTER);
    grid.setHgap(10);
    grid.setVgap(10);
    grid.setPadding(new Insets(25, 25, 25, 25));

    Text scenetitle = new Text("Welcome");
    scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
    grid.add(scenetitle, 0, 0, 2, 1);

    Label userName = new Label("User Name:");
    grid.add(userName, 0, 1);

    TextField userTextField = new TextField();
    grid.add(userTextField, 1, 1);

    Label pw = new Label("Password:");
    grid.add(pw, 0, 2);

    PasswordField pwBox = new PasswordField();
    grid.add(pwBox, 1, 2);

    Button btn = new Button("Sign in");
    HBox hbBtn = new HBox(10);
    hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
    hbBtn.getChildren().add(btn);
    grid.add(hbBtn, 1, 4);

    final Text actiontarget = new Text();
    grid.add(actiontarget, 1, 6);

    btn.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent e) {
            actiontarget.setFill(Color.FIREBRICK);
            actiontarget.setText("Sign in button pressed");
        }
    });

    Scene scene = new Scene(grid, 300, 275);
    primaryStage.setScene(scene);
    primaryStage.show();
}
}

我运行

javac Login.java

效果很好。那我运行

java login

我也试过了

java Login

使用大写 'L' 但仍然得到

Error: Could not find or load main class login

您可能应该将 "login.java" 文件重命名为 "Login.java",因为它在包 "login" 中,您需要上一级目录,并且 运行

java login.Login

编辑: 你提到这个文件在你的桌面上,你需要把它放在一个名为 "login" 的文件夹中,因为这个文件在登录包中

您需要删除 package 行,或将您的文件放在名为 login 的目录中。 我这样制作了一个简单的文件:

public class Login {

    public static void main(String[] args) {
        System.out.println("Ran.");
    }
}

然后我 运行 以下有效:

javac Login.java
java Login

我还通过使用包 login 创建目录 login/ 使其工作:

login/Login.java内容为:

package login;
public class Login {

    public static void main(String[] args) {
        System.out.println("Ran.");
    }
}

然后 运行:

mkdir login
vi login/Login.java
javac login/Login.java
java login.Login

适合我。

编辑: 只要您拥有 JavaFX,相同的结构就会使您的代码正常工作。 JavaFX 没有什么独特之处会影响您的编译。你的问题只是目录结构+编译问题