从另一个类调用时,实例“主”方法未运行

时间:2015-08-21 00:03:33

标签: java netbeans

我正在学习Java并在netbeans中试验Javafx。

我在这里运行sqlite教程:http://www.tutorialspoint.com/sqlite/sqlite_java.htm

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

我在测试项目“testDB”中进行设置,出于某种原因,当我启动类时,类本身被识别,但是main()没有运行。

这是testdb文件本身:

testDB.java:

/*
 * 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 java.sql.*;

/**
 *
 */
public class testDB {

    public static void main(String args[]) {

        //THESE STEPS ARE ON NOT RUNNING (compiles without errors)

        System.out.println("testing");
        Connection c = null;
        try {
            Class.forName("org.sqlite.JDBC");
            c = DriverManager.getConnection("jdbc:sqlite:test.db");
        } catch (Exception e) {
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
            System.exit(0);
        }
        System.out.println("Opened database successfully");    

    }

    public void makeStuff(){

    }

}

sqlitetest.java

/*
 * 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);
    }

}

1 个答案:

答案 0 :(得分:5)

我认为你在构造函数和main方法之间感到困惑。

  • 只有在启动JVM,运行该特定类时(或者如果您在其他地方显式调用它),才会调用main方法。
  • 当您创建类的实例时,将调用构造函数,就像您在此处一样。

SQLiteConnection中,更改:

testdb

public static void main(String args[]) {

或者,在public testdb() { 中调用testdb.main(args)(或其他一些参数)。