当前位置: 首页 > 知识库问答 >
问题:

不清楚如何设置JavaFX(VSCode)

丁良骏
2023-03-14

我已经开始做一个JavaFX项目,并且我已经按照这个问题中的设置说明进行了操作:IntelliJ无法使用VSCode识别JavaFX11和OpenJDK11。我用的是苹果笔记本电脑。

到了最后一部分,我要用settings.json和launch.json设置东西。我尽可能严格地按照说明操作,但错误:error:JavaFX运行时组件丢失,并且运行此应用程序所需的组件一直出现。

以下是我settings.json和launch.json文件的样子:

settings.json

{
    "maven.view": "flat",
    "java.project.referencedLibraries": [
        "lib/**/*.jar",
        "javafx-sdk-11.0.2/**/*.jar"
    ],
    "java.dependency.packagePresentation": "hierarchical"
}

launch.json

{
    "configurations": [
        {
            "type": "java",
            "name": "CodeLens (Launch) - Main",
            "request": "launch",
            "mainClass": "src.Main",
            "projectName": "<censored>"
        },
        {
            "type": "java",
            "name": "CodeLens (Launch) - Main",
            "request": "launch",
            "vmArgs": "--module-path <path_from_root_directory_through_desktop_to_folder_with_project>/javafx-sdk-11.0.2/lib --add-modules javafx.controls,javafx.fxml",
            "mainClass": "Main",
            "projectName": "Main"
        }
    ]
}

我已经将JavaFX SDK的实际路径替换为:

路径本身假设VSCode编译器从根目录开始查找javafxsdk(我尝试过假设它从正在运行的项目开始,但仍然不起作用)。

我已将“mainClass”和“projectName”分配给包含所有代码的java文件的文件名(减去.java扩展名)

以下是我正在使用的java文件的代码(如果有帮助的话):

package src;

import javafx.scene.layout.Pane;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

import javafx.application.Application;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws FileNotFoundException {
        //declares a pane
        Pane pane = new Pane();
        
        //IMAGE ONE
        //creates a new imageView
        ImageView image1 = new ImageView(new Image(new FileInputStream("c1.gif")));
        
        //binds the image to the left of the center of the pane width
        image1.xProperty().bind((pane.widthProperty().divide(2)).subtract(36));
        
        //binds the image to the center of the pane height
        image1.yProperty().bind(pane.widthProperty().divide(2));
        
        //formats the image
        image1.setFitWidth(71);
        image1.setFitHeight(96);
        image1.setPreserveRatio(true);
        
        //adds the image
        pane.getChildren().add(image1);
        
        
        //IMAGE TWO
        //creates a new imageView
        ImageView image2 = new ImageView(new Image(new FileInputStream("c2.gif")));
        
        //binds the image to the center of the pane width
        image2.xProperty().bind(pane.widthProperty().divide(2));
        
        //binds the image to the center of the pane height
        image2.yProperty().bind(pane.widthProperty().divide(2));
        
        //formats the image
        image2.setFitWidth(71);
        image2.setFitHeight(96);
        image2.setPreserveRatio(true);
        
        //adds the image
        pane.getChildren().add(image2);
        
        
        //IMAGE THREE
        //creates a new imageView
        ImageView image3 = new ImageView(new Image(new FileInputStream("c3.gif")));
        
        //binds the image to the right of the center of the pane width
        image3.xProperty().bind((pane.widthProperty().divide(2)).add(36));
        
        //binds the image to the center of the pane height
        image3.yProperty().bind(pane.widthProperty().divide(2));
        
        //formats the image
        image3.setFitWidth(71);
        image3.setFitHeight(96);
        image3.setPreserveRatio(true);
        
        //adds the image
        pane.getChildren().add(image3);
        
        
        //SCENE SETUP
        //adds the pane with images to new scene
        Scene scene = new Scene(pane, 500, 500);
        
        //sets title of stage
        primaryStage.setTitle("DisplayImage");
        
        //displays the stage
        primaryStage.show();
        }
    
    public static void main(String []args) {
        launch(args);
        }
    }

如果我做错了什么,请澄清。

只是澄清一下,我不是问代码是否有任何错误,我想知道我在使用JavaFXSDK时犯了什么错误

可能没有足够的信息,请告诉我需要提供哪些其他信息。


共有1个答案

白昊东
2023-03-14

1.检查安装和环境配置。

参考:JavaFX入门

2.检查设置java.configuration.runtimes,VS code从中检测项目所需的运行时,并选择适当的配置

推荐人:JDK用于项目

如果没有任何效果,请安装另一个jdk并尝试一下。

 类似资料:
  • 问题内容: 试图获得公司名单,但这给了我一个错误。 例外: 我的文件包含: 当我要添加新的工作订单时,select中应该有可用的公司列表。 更新: 这是我的方法 : 问题答案: JSP包含操作返回的选择标记。添加订单时,它应该具有绑定到bean属性的属性。它应该是值堆栈中的一个对象。 在大多数情况下,最好在操作类中初始化该属性,以更好地实现必须编写方法和初始化列表的位置。 因为标签的属性不能为引发

  • 嗨,我正在学习Selenium&我不太清楚上面两个函数是如何工作的:问题陈述: 我有一个练习作业:转到http://the-internet.herokuapp.com/ 单击链接>多个窗口一个窗口打开>单击>>单击此处另一个窗口打开>>从该窗口获取文本并打印,然后返回http://the-internet.herokuapp.com/Windows并打印文本。 流程:http://the-int

  • 我有一个badtokenexception的报告,尽管我尝试了任何事情,但我无法复制它,对我来说也不清楚它是如何发生的。 BadTokenException(@Android.view.viewrootimpl:setView:575)通过(@Android.view.WindowmanagerGlobal:AddView:272)完整跟踪:Android.view.Windowmanager$B

  • #设计人的求职记录# 品牌设计师面试一定要问的问题? 这几年品牌设计的需求越来越大,总能在一些平 台看见$$设计公司避雷...... 品牌设计师这个职位鱼龙混杂,面试是双方选择的一个事情,不要真的进去工作后才觉得坑,你完全可以在面试时就避雷,下面是我整理的面试一定要问到的一些问题。 工作内容方面: 1.公司业务方向占比情况?(品牌 vi 设计,广告平面设计,电商设计等......)2.业务单是单独

  • 我试图理解spark 3中的新特性:动态分区修剪。 看看这个测试: https://github.com/apache/spark/blob/master/sql/core/src/test/scala/org/apache/spark/sql/DynamicPartitionPruningSuite.scala#L257 我不明白为什么它是动态的并且要经典的修剪? 谢谢

  • 问题内容: 我正在尝试使用JavaFX中的WebView入门,但是当尝试打开W​​ebView时,我收到以下所示的错误,我该如何解决此问题? 问题答案: 尝试运行WebView时遇到任何错误时,请确保您的VM选项包含模块javafx.web。 虚拟机选项: 在IntelliJ中,您可以通过转到IDE右上方的“编辑配置”按钮来访问VM选项。