Repository navigation
JDK 11 / OpenJFX 11 no CSS autocomplete and “Unknown property” warning #75
Description
My css autocomplete doesn't work and I get "unknown property" warnings. I've tried a lot already but nothing seems to work. I even reinstalled eclipse, removed all the plugins, and reinstalled all of them. I created new workspaces, new projects, ... Nothing works.
My Environment
Eclipse 2020-03 (4.15.0)
Windows 10 (1903)
Java JDK 11.0.7
What I did
-
Created a new Maven project (JavaSE-11)
-
Added OpenJFX as dependency in the pom file
-
Made sure the Maven dependencies are on the classpath since I don't want to use the module system
-
Added the JavaFX SDK library to the classpath
-
Downloaded the OpenJFX libraries and point JavaFX 11 + SDK path in preferences to the path I installed it to
(C:\Program Files\OpenJFX\javafx-sdk-11.0.2\lib) -
Write a test class using the JavaFX libraries (which works)
-
Create a css file to style my application which adds the
xtextnature (and open it with the e(fx)clipse css editor)
So I can use the JavaFX libraries and I can launch my application without any errors. But I can't use the css autocomplete feature because all properties are unknown and this causes warnings.
My POM file
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>FXProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11.0.1</version>
</dependency>
</dependencies>
</project>
My CSS file (application.css)
.root {
-fx-background-color: red;
}
Launcher class (main class)
import javafx.application.Application;
public class Launcher {
public static void main(String[] args) {
Application.launch(TestApp.class);
}
}
TestApp class
import javafx.application.Application;
import javafx.stage.Stage;
public class TestApp extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
}
Activity
mininotallarines commentedon Jun 1, 2020
@4n4h3l I also posted a question on stack about this topic, but never got any answer as well. The developers of e(fx)clipse have a development repository that seems to "work". By that I mean, it does the trick for now but it needs a lot of work done, that's why this issue is still open.
Try removing your current e(fx)clipse and instead use the following repositories:
http://download.eclipse.org/efxclipse/updates-released/3.6.0/site
https://download.eclipse.org/efxclipse/updates-nightly/site
mininotallarines commentedon Jun 1, 2020
@4n4h3l I'm very glad I could be of help. This issue was very frustrating for me too because I lost about a week of development not being able to fix this and no replies whatsoever. I looked into it and there are 2 maven (m2e) packages installed in my Eclipse installation. Should have mentioned them, but glad you found it.
brett-smith commentedon Oct 10, 2023
I know it's been a while, and maybe things have changed, but the above solutions do not work. I have tried with multiple versions from version 3.6.0 up to the current 3.10.0 nightly builds, but the results are always the same.
It appears that some properties do work, for example
-fx-background, but the more specific-fx-background-colordoes not.CssDslJavaValidator.javaseems to be where all of this happens, and that led me to the@SuppressWarning"annotation" you can add to the CSS. This works, but adding this to 100s of styles is not practical. This same class has aPREDEFINED_VAR_PROPSthat contains a list of-fx-*properties it considers valid. Somehow this contains nearly none of the properties I actually use.It would be useful maybe if efx could just consider anything that starts with
-fx-*as a valid property, or have some configurable pattern. At the very least, the ability to turn off validation entirely would be better than the status quo.