gpt4 book ai didi

发现没有 Maven css 文件的 JavaFX : Maven project cannot find css files,

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:59 24 4
gpt4 key购买 nike

对不起,奇怪的标题,不知道该写什么。我正在使用 Java8 开发 JavaFX 应用程序。为此,我从 com.zenjava 获得了 javafx-maven-plugin。我有一个简单的测试代码,其中有一个主类和一个用于样式设置的 css 页面。我在没有 Maven 的情况下有相同的元素,并且工作正常。但是对于 Maven,我无法让它运行。我得到了 CSS 文件的 NPE-。我已经尝试了多种选择。你能帮忙的话,我会很高兴。谢谢。

错误日志:

Exception in Application start method
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at View.Main.start(Main.java:110)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null$49(GtkApplication.java:139)
... 1 more

POM.xml :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>MavenFX</groupId>
<artifactId>MavenFX</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>

</dependencies>

<build>
<plugins>
<plugin>

<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.2.0</version>
<configuration>
<mainClass>View.Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>

主类:

package View;

import javafx.application.Application;
import javafx.geometry.Insets;
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.effect.DropShadow;
import javafx.scene.effect.Reflection;
import javafx.scene.layout.BorderPane;
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 Main extends Application {


String user = "JavaFX2";
String pw = "password";
String checkUser, checkPw;


@Override
public void start(Stage primaryStage) throws Exception{
primaryStage.setTitle("Test Login");

BorderPane bp = new BorderPane();
bp.setPadding(new Insets(10,50,50,50));

//Adding HBox
HBox hb = new HBox();
hb.setPadding(new Insets(20,20,20,30));

//Adding GridPane
GridPane gridPane = new GridPane();
gridPane.setPadding(new Insets(20,20,20,20));
gridPane.setHgap(5);
gridPane.setVgap(5);

//Implementing Nodes for GridPane
Label lblUserName = new Label("Username");
final TextField txtUserName = new TextField();
Label lblPassword = new Label("Password");
final PasswordField pf = new PasswordField();
Button btnLogin = new Button("Login");
final Label lblMessage = new Label();

//Adding Nodes to GridPane layout
gridPane.add(lblUserName, 0, 0);
gridPane.add(txtUserName, 1, 0);
gridPane.add(lblPassword, 0, 1);
gridPane.add(pf, 1, 1);
gridPane.add(btnLogin, 2, 1);
gridPane.add(lblMessage, 1, 2);


//Reflection for gridPane
Reflection r = new Reflection();
r.setFraction(0.7f);
gridPane.setEffect(r);

//DropShadow effect
DropShadow dropShadow = new DropShadow();
dropShadow.setOffsetX(5);
dropShadow.setOffsetY(5);

//Adding text and DropShadow effect to it
Text text = new Text("Test Login");
text.setFont(Font.font("Courier New", FontWeight.BOLD, 28));
text.setEffect(dropShadow);

//Adding text to HBox
hb.getChildren().add(text);

//Add ID's to Nodes
bp.setId("bp");
gridPane.setId("root");
btnLogin.setId("btnLogin");
text.setId("text");

//Action for btnLogin
btnLogin.setOnAction(event -> {
checkUser = txtUserName.getText();
checkPw = pf.getText();
if(checkUser.equals(user) && checkPw.equals(pw)){
lblMessage.setText("Congratulations!");
lblMessage.setTextFill(Color.GREEN);
}
else{
lblMessage.setText("Incorrect user or pw.");
lblMessage.setTextFill(Color.RED);
}
txtUserName.setText("");
pf.setText("");
});

//Add HBox and GridPane layout to BorderPane Layout
bp.setTop(hb);
bp.setCenter(gridPane);

//Adding BorderPane to the scene and loading CSS
Scene scene = new Scene(bp);

scene.getStylesheets().add(getClass().getClassLoader().getResource("UI/login.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.setTitle("Test Login");
/*primaryStage.titleProperty().bind(
scene.widthProperty().asString().
concat(" : ").
concat(scene.heightProperty().asString()));*/
primaryStage.setResizable(false);
primaryStage.show();
}


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

CSS 文件:

#root {
-fx-background-color: linear-gradient(lightgray, gray);
-fx-border-color: white;
-fx-border-radius: 20;
-fx-padding: 10 10 10 10;
-fx-background-radius: 20;
}

#bp {
-fx-background-color: linear-gradient(gray,DimGrey );

}

#btnLogin {
-fx-background-radius: 30, 30, 29, 28;
-fx-padding: 3px 10px 3px 10px;
-fx-background-color: linear-gradient(orange, orangered );
}

#text {
-fx-fill: linear-gradient(orange , orangered);
}

如果我运行 mvn jfx:jar,我得到了 jar 文件,但它也有同样的问题。为什么如果是 Maven 元素,JavaFX 在查找文件时会遇到问题。你能帮忙的话,我会很高兴。谢谢。

最佳答案

您可以尝试输出资源文件的路径:

       System.err.println(getClass().getClassLoader().getResource("UI/login.css"));

并查看它指向的位置。 maven 可能更改了您的资源位置。我不确定,但你可以试试。请告诉我。

关于发现没有 Maven css 文件的 JavaFX : Maven project cannot find css files,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35724429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com