Java:如何解决'无法加载主类'的错误

时间:2015-12-16 21:32:52

标签: java classpath

尽管这个问题的版本很多,但它仍然没有提出任何正确或直接的答案。

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

我的桌面上有我的文件,名为

login.java

我跑了

javac Login.java

现在有两个名为classLogin$1.class的{​​{1}}个文件。

我收到错误Login.class

请为了上帝的爱,有人可以通过有条不紊的方式为java新手回答这个问题。

我很乐意跟随并告诉你每一步会发生什么。

亲切的问候。

这是代码

Could not find or load main class Login.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

使用大写'L'但仍然可以

java Login

2 个答案:

答案 0 :(得分:0)

你应该将你的“login.java”文件重命名为“Login.java”,因为这是在“login”包中,你需要上一个目录,然后运行

java login.Login

编辑:您提到此文件位于桌面上,您需要将其放在名为“login”的文件夹中,因为此文件位于登录包中

答案 1 :(得分:0)

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

public class Login {

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

然后我运行了以下工作:

javac Login.java
java 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没有任何独特之处会影响您的编译。您的问题只是目录结构+编译问题。