Java “实例”;“主要”;方法在从另一个类调用时未运行

Java “实例”;“主要”;方法在从另一个类调用时未运行,java,netbeans,Java,Netbeans,我正在学习Java,并在netbeans中试用Javafx 我在这里运行sqlite教程: 当设置为一个单独的文件时,它当然可以正常工作 我正在一个测试项目“testDB”中设置它,由于某种原因,当我初始化这个类时,该类本身被识别,但main()没有运行 下面是testdb文件本身: testDB.java: sqlitetest.java 我认为您正在混淆构造函数和主方法 只有在启动JVM、运行特定类(或者在其他地方显式调用)时,才会调用main方法 在创建类的实例时会调用构造函数,就像这里

我正在学习Java,并在netbeans中试用Javafx

我在这里运行sqlite教程:

当设置为一个单独的文件时,它当然可以正常工作

我正在一个测试项目“testDB”中设置它,由于某种原因,当我初始化这个类时,该类本身被识别,但main()没有运行

下面是testdb文件本身:

testDB.java: sqlitetest.java
我认为您正在混淆构造函数和主方法

  • 只有在启动JVM、运行特定类(或者在其他地方显式调用)时,才会调用main方法
  • 在创建类的实例时会调用构造函数,就像这里所做的那样
testdb
中,更改:

public static void main(String args[]) {


或者,在
Sqlitetest.main

中调用
testdb.main(args)
(或使用其他一些参数),这可能是错误的。我设置它的想法是,main是在启动时启动的,因此我在那里输入的任何代码也会启动。我可能会被误解,对<实例化类时不调用code>main。当您使用
java
命令执行java程序时,会调用它。使用
new
运算符时,将调用构造函数。@takendark谢谢。我在答案中添加了更多关于差异的信息。
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sqlitetest;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 *
 */
public class Sqlitetest extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);


        stage.setScene(scene);
        stage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        testDB test = new testDB();
        test.makeStuff();
        launch(args);
    }

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