Исключение NullPointerException при использовании метода Slider.setShowTickLabels в JavaFX

#java #javafx

#Ява #javafx

Вопрос:

NullPointerException при использовании Slider.setShowTickLabels метода.

Я использую JavaFX SDK 17.0.1 и JDK 11.0.13.8

Windows 10

 public void start(Stage window) {  BorderPane pane = new BorderPane();   Slider slider = new Slider(0, 100, 0);  slider.setShowTickMarks(true); // slider.setShowTickLabels(true);   pane.setCenter(slider);   Scene scene = new Scene(pane);  window.setScene(scene);  window.setTitle("Application");  window.show(); }  

Выводится, когда slider.setShowTickLabels(true) закомментировано.

Получение исключения при включении того же метода.

 java.lang.NullPointerException  at javafx.graphics/com.sun.javafx.font.directwrite.DWGlyph.createBitmap(DWGlyph.java:287)  at javafx.graphics/com.sun.javafx.font.directwrite.DWGlyph.getCachedBitmap(DWGlyph.java:273)  at javafx.graphics/com.sun.javafx.font.directwrite.DWGlyph.getD2DMask(DWGlyph.java:167)  at javafx.graphics/com.sun.javafx.font.directwrite.DWGlyph.getPixelData(DWGlyph.java:352)  at javafx.graphics/com.sun.prism.impl.GlyphCache.getCachedGlyph(GlyphCache.java:258)  at javafx.graphics/com.sun.prism.impl.GlyphCache.render(GlyphCache.java:148)  at javafx.graphics/com.sun.prism.impl.ps.BaseShaderGraphics.drawString(BaseShaderGraphics.java:2101)  at javafx.graphics/com.sun.javafx.sg.prism.NGText.renderText(NGText.java:312)  at javafx.graphics/com.sun.javafx.sg.prism.NGText.renderContent2D(NGText.java:270)  at javafx.graphics/com.sun.javafx.sg.prism.NGShape.renderContent(NGShape.java:261)  at javafx.graphics/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)  at javafx.graphics/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)  at javafx.graphics/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270)  at javafx.graphics/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578)  at javafx.graphics/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)  at javafx.graphics/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)  at javafx.graphics/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270)  at javafx.graphics/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578)  at javafx.graphics/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)  at javafx.graphics/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)  at javafx.graphics/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:270)  at javafx.graphics/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:578)  at javafx.graphics/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2072)  at javafx.graphics/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1964)  at javafx.graphics/com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:479)  at javafx.graphics/com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:328)  at javafx.graphics/com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91)  at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)  at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)  at javafx.graphics/com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)  at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)  at java.base/java.lang.Thread.run(Thread.java:829)  

Любая помощь была бы очень признательна, спасибо.

Комментарии:

1. Можете ли вы запустить свое приложение с java -Djavafx.verbose=true -Dprism.verbose=true помощью … и отредактируйте вопрос, чтобы включить вывод в формате кода?

2. не может размножаться ..

3. Я неправильно настроил переменные среды. Спасибо за ответ.

Ответ №1:

Оказывается, я неправильно включил путь к SDK JavaFX в переменные среды. Вместо этого путь указывал на bin папку lib .