为什么;java.lang.reflect.InvocationTargetException“;显示

为什么;java.lang.reflect.InvocationTargetException“;显示,java,javafx,javafx-2,Java,Javafx,Javafx 2,我正在使用netbeanside在javafx中开发一个项目。每当我运行代码时,都会遇到一些异常。直到昨天才有问题。例外情况如下: Executing E:\Project\WelcomePage\dist\run204992192\WelcomePage.jar using platform C:\Program Files\Java\jdk1.7.0_45\jre/bin/java Exception in Application constructor java.lang.re

我正在使用
netbeanside
javafx
中开发一个项目。每当我运行代码时,都会遇到一些异常。直到昨天才有问题。例外情况如下:

Executing E:\Project\WelcomePage\dist\run204992192\WelcomePage.jar using platform       C:\Program Files\Java\jdk1.7.0_45\jre/bin/java
Exception in Application constructor
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.javafx.main.Main.launchApp(Main.java:698)
at com.javafx.main.Main.main(Main.java:871)
Caused by: java.lang.RuntimeException: Unable to construct Application instance: class welcomepage.WelcomePage
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:393)
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
    at java.lang.Thread.run(Thread.java:744)
    Caused by: java.lang.NoSuchMethodException: welcomepage.WelcomePage.<init>()
    at java.lang.Class.getConstructor0(Class.java:2810)
    at java.lang.Class.getConstructor(Class.java:1718)
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:275)
    ... 3 more
    Java Result: 1
使用平台C:\Program Files\Java\jdk1.7.0\u 45\jre/bin/Java执行E:\Project\WelcomePage\dist\run204992192\WelcomePage.jar
应用程序构造函数中的异常
java.lang.reflect.InvocationTargetException
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于com.javafx.main.main.launchApp(main.java:698)
位于com.javafx.main.main.main(main.java:871)
原因:java.lang.RuntimeException:无法构造应用程序实例:类welcomepage.welcomepage
位于com.sun.javafx.application.LaunchImpl.launchApplication1(LaunchImpl.java:393)
访问com.sun.javafx.application.launchempl.access$000(launchempl.java:47)
位于com.sun.javafx.application.launchempl$1.run(launchempl.java:115)
运行(Thread.java:744)
原因:java.lang.NoSuchMethodException:welcomepage.welcomepage。()
位于java.lang.Class.getConstructor0(Class.java:2810)
位于java.lang.Class.getConstructor(Class.java:1718)
位于com.sun.javafx.application.LaunchImpl.launchApplication1(LaunchImpl.java:275)
... 3个以上
Java结果:1
我的源代码非常大,所以我排除了import语句。我将在下面提供我的部分代码:

 class WelcomePage extends Application {
 @Override
 public void start(Stage stage33) {

    BorderPane border = new BorderPane();

    border.setTop(addVBox());
    border.setLeft(addVBox1());

    Scene scene = new Scene(border,700,450);
    stage33.setScene(scene);
    stage33.setResizable(false);
    scene.getStylesheets().add
    (WelcomePage.class.getResource("WelcomePage.css").toExternalForm());
    stage33.show();

 }

 private VBox addVBox() {

    VBox vbox = new VBox();
    vbox.setPadding(new Insets(5, 12, 5, 20));
    vbox.setSpacing(10);   // Gap between nodes
    //vbox.setStyle("-fx-background-color: #999999;");

    Image image = new Image(getClass().getResourceAsStream("logo11.png"));
    Label lb1=new Label("    C - MARK AND ATTENDANCE CALCULATOR");
    lb1.setAlignment(Pos.CENTER);
    lb1.setFont(Font.font("Calibri",FontWeight.BOLD,28));
    lb1.setTextFill(Color.BLACK);
    lb1.setGraphic(new ImageView(image));

    vbox.getChildren().addAll(lb1);

    return vbox;
 }

 private VBox addVBox1()
 {
    VBox vbox1=new VBox();
    vbox1.setPadding(new Insets(20, 2, 15, 20));
    vbox1.setSpacing(20);

    Button btnl2=new Button("SIGN IN");
    btnl2.setFont(Font.font("Calibri",FontWeight.BOLD,16));
    btnl2.setPrefSize(300,60);
    btnl2.setStyle(" -fx-base: #0066cc;");

    btnl2.setOnAction(new EventHandler<ActionEvent>() {
     @Override
     public void handle(ActionEvent e) {
       signin();
     }
     });

    Button btnl4=new Button("HELP");
    btnl4.setFont(Font.font("Calibri",FontWeight.BOLD,16));
    btnl4.setPrefSize(300,60);
    btnl4.setStyle(" -fx-base: #0066cc;");

    btnl4.setOnAction(new EventHandler<ActionEvent>() {
     @Override
     public void handle(ActionEvent e) {
      help();
     }
     });

    Button btnl5=new Button("ABOUT");
    btnl5.setFont(Font.font("Calibri",FontWeight.BOLD,16));
    btnl5.setPrefSize(300,60);
    btnl5.setStyle(" -fx-base: #0066cc;");

    btnl5.setOnAction(new EventHandler<ActionEvent>() {
     @Override
     public void handle(ActionEvent e) {
      about();
     }
     });

    Button btnl6=new Button("EXIT");
    btnl6.setFont(Font.font("Calibri",FontWeight.BOLD,16));
    btnl6.setPrefSize(300,60);
    btnl6.setStyle(" -fx-base: #0066cc;");

    btnl6.setOnAction(new EventHandler<ActionEvent>() {
     @Override
     public void handle(ActionEvent e) {
      System.exit(0);
     }
     });

    vbox1.getChildren().addAll(btnl2,btnl4,btnl5,btnl6);

    return vbox1;
 }
 public static void main(String[] args) {
    launch(args);
 }
 }
class WelcomePage扩展应用程序{
@凌驾
公开作废开始(第33阶段){
BorderPane border=新的BorderPane();
setTop(addVBox());
setLeft(addVBox1());
场景=新场景(边框,700450);
第33阶段:场景(场景);
阶段33.可设置大小(假);
scene.getStylesheets().add
(WelcomePage.class.getResource(“WelcomePage.css”).toExternalForm());
stage33.show();
}
私有VBox addVBox(){
VBox VBox=新的VBox();
vbox.setPadding(新插图(5,12,5,20));
vbox.setspace(10);//节点之间的间隙
//vbox.setStyle(“-fx背景色:#999999;”);
Image Image=新图像(getClass().getResourceAsStream(“logo11.png”);
标签lb1=新标签(“C-分数和考勤计算器”);
lb1.设置对齐(位置中心);
lb1.setFont(Font.Font(“Calibri”,fontwweight.BOLD,28));
lb1.setTextFill(颜色为黑色);
lb1.setGraphic(新图像视图(图像));
vbox.getChildren().addAll(lb1);
返回vbox;
}
专用VBox addVBox1()
{
VBox vbox1=新的VBox();
vbox1.setPadding(新插图(20,2,15,20));
vbox1.setspace(20);
按钮btnl2=新按钮(“登录”);
btnl2.setFont(Font.Font(“Calibri”,fontwweight.BOLD,16));
btnl2.setPrefSize(300,60);
btnl2.setStyle(“-fx base:#0066cc;”);
setOnAction(新的EventHandler()){
@凌驾
公共无效句柄(ActionEvent e){
签名();
}
});
按钮btnl4=新按钮(“帮助”);
btnl4.setFont(Font.Font(“Calibri”,fontwweight.BOLD,16));
btnl4.setPrefSize(300,60);
btnl4.setStyle(“-fx base:#0066cc;”);
setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent e){
帮助();
}
});
按钮btnl5=新按钮(“关于”);
btnl5.setFont(Font.Font(“Calibri”,fontwweight.BOLD,16));
btnl5.setPrefSize(300,60);
btnl5.setStyle(“-fx base:#0066cc;”);
btnl5.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent e){
关于();
}
});
按钮btnl6=新按钮(“退出”);
btnl6.setFont(Font.Font(“Calibri”,fontwweight.BOLD,16));
btnl6.setPrefSize(300,60);
btnl6.setStyle(“-fx base:#0066cc;”);
setOnAction(新的EventHandler()){
@凌驾
公共无效句柄(ActionEvent e){
系统出口(0);
}
});
vbox1.getChildren().addAll(btnl2、btnl4、btnl5、btnl6);
返回vbox1;
}
公共静态void main(字符串[]args){
发射(args);
}
}

@assylias,从评论来看,是正确的。您的类隐式地具有包可见性,因为您没有提供访问修饰符。Java语言规范说

默认构造函数具有由无访问修饰符暗示的默认访问权限

因此,编译器提供的默认无参数构造函数具有默认访问权限

使用的方法

返回反映指定公共属性的构造函数对象 此类对象表示的类的构造函数

但是构造函数不是
public
,因此对
getConstructor(..)
方法不可见。所以你得到了

NoSuchMethodException-如果找不到匹配的方法


您自己提供一个
public
构造函数,或者让您的类
public

@assylias,从注释来看是正确的。您的类隐式地具有包可见性,因为您没有提供访问修饰符。Java语言规范说

默认构造函数具有由无访问修饰符暗示的默认访问权限

因此,编译器提供的默认无参数构造函数具有默认访问权限

使用的方法

返回反映指定公共属性的构造函数对象 此类对象表示的类的构造函数

但是构造函数不是
public
,因此对
getConstructor(..)
方法不可见。所以你得到了

NoSuchMethodException-如果找不到匹配的方法


自己提供一个
public
构造函数,或者让你的类
public

这就是你的整个类吗?也许试着把它公之于众?那是你的全班同学吗?也许试着把它公之于众?