Java:如何解决 'Could not load main class' 的错误
Java: How to solve error for 'Could not load main class'
尽管这个问题有很多版本,它仍然碰巧没有一个正确或直接的答案。
我有同样的问题,无法执行我的项目。
我的桌面上有我的文件,它叫做
login.java
我有 运行
javac Login.java
现在有两个 class
文件,分别命名为 Login.class
和 Login.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 没有什么独特之处会影响您的编译。你的问题只是目录结构+编译问题
尽管这个问题有很多版本,它仍然碰巧没有一个正确或直接的答案。
我有同样的问题,无法执行我的项目。
我的桌面上有我的文件,它叫做
login.java
我有 运行
javac Login.java
现在有两个 class
文件,分别命名为 Login.class
和 Login.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 没有什么独特之处会影响您的编译。你的问题只是目录结构+编译问题