2016-11-04 62 views
1

我的一位同事試圖在他的機器上構建我的JavaFXPorts應用程序。好處是:在對build.gradle文件中的forceLinkClasses部分進行了一些小的更新後,該文件起作用了。 但是...啓動期間黑屏幾秒鐘

雖然我們可以簡單地看到一張白色的圖像,但我們仍然會遇到黑屏約5秒鐘。

在控制檯上,他可以看到下面的輸出(其中包括):

[WARN] java.lang.Class: Class.forName() failed to load 'ch.cnlab.disentis.resource.strings_en'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>ch.cnlab.disentis.resource.strings_en</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'ch.cnlab.disentis.resource.strings_de_CH'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>ch.cnlab.disentis.resource.strings_de_CH</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'ch.cnlab.disentis.resource.strings_de'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>ch.cnlab.disentis.resource.strings_de</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'ch.cnlab.disentis.resource.strings'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>ch.cnlab.disentis.resource.strings</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'com.fasterxml.jackson.databind.ext.Java7SupportImpl'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>com.fasterxml.jackson.databind.ext.Java7SupportImpl</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
Nov 4, 2016 11:32:44 AM com.fasterxml.jackson.databind.ext.Java7Support <clinit> 
WARNING: Unable to load JDK7 types (annotations, java.nio.file.Path): no Java7 support added 
[WARN] java.lang.Class: Class.forName() failed to load 'javax.xml.stream.FactoryFinder$ClassLoaderFinderConcrete'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>javax.xml.stream.FactoryFinder$ClassLoaderFinderConcrete</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'javax.xml.stream.FactoryFinder$ClassLoaderFinderConcrete'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>javax.xml.stream.FactoryFinder$ClassLoaderFinderConcrete</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'javax.xml.stream.FactoryFinder$ClassLoaderFinderConcrete'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>javax.xml.stream.FactoryFinder$ClassLoaderFinderConcrete</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'javax.xml.stream.FactoryFinder$ClassLoaderFinderConcrete'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>javax.xml.stream.FactoryFinder$ClassLoaderFinderConcrete</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'com.sun.javafx.font.t2k.T2KFactory'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>com.sun.javafx.font.t2k.T2KFactory</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'com.sun.javafx.tk.quantum.QuantumMessagesBundle_de_CH'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>com.sun.javafx.tk.quantum.QuantumMessagesBundle_de_CH</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'com.sun.javafx.tk.quantum.QuantumMessagesBundle_de'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>com.sun.javafx.tk.quantum.QuantumMessagesBundle_de</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'com.sun.javafx.tk.quantum.QuantumMessagesBundle'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>com.sun.javafx.tk.quantum.QuantumMessagesBundle</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'com.oracle.jrockit.jfr.FlightRecorder'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>com.oracle.jrockit.jfr.FlightRecorder</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'com.sun.javafx.scene.control.skin.resources.controls_de_CH'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>com.sun.javafx.scene.control.skin.resources.controls_de_CH</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'com.sun.javafx.scene.control.skin.resources.controls_de'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>com.sun.javafx.scene.control.skin.resources.controls_de</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
[WARN] java.lang.Class: Class.forName() failed to load 'com.sun.javafx.scene.control.skin.resources.controls'. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>com.sun.javafx.scene.control.skin.resources.controls</pattern></forceLinkClasses> to your robovm.xml file to link it in. 
setSwapInterval(1) 
max rectangle texture cell size = 89 
wrap rectangle texture = 2 x 2 
ES2ResourceFactory: Prism - createStockShader: AlphaTexture_Color.frag 
ES2ResourceFactory: Prism - createStockShader: FillRoundRect_Color.frag 
ES2ResourceFactory: Prism - createStockShader: DrawRoundRect_Color.frag 
ES2ResourceFactory: Prism - createStockShader: Texture_Color.frag 
ES2ResourceFactory: Prism - createStockShader: Solid_TextureRGB.frag 
Loading Prism common native library ... 
     succeeded. 
setSwapInterval(0) 
setSwapInterval(1) 
setSwapInterval(0) 
setSwapInterval(1) 
setSwapInterval(0) 
setSwapInterval(1) 
setSwapInterval(0) 

延遲似乎RoboVM警告後發生。

有沒有人有任何想法,這可能是什麼原因?

感謝和問候, 丹尼爾

PS:我需要問這個,因爲他在計算器上不考慮...所以可能有一些往返時間,如果我要問他再次測試。

回答

0

感謝@JoséPereda,我們發現了這個問題:它是用於測試的iPhone。這是一款經常用於開發的舊手機。顯然,它處於「近乎死亡」的狀態。

當我們切換到另一個電話(另一個同事的iPhone 6S:-D)後,應用程序表現得像預期的那樣:在測試過程中閃電般快速。

1

通常在幾秒鐘內出現黑屏意味着啓動時存在一些沉重的負載。

在繼續之前,請確保加載是絕對必要的,並檢查在後臺任務中是否解決此問題。

如果沒有幫助,有幾個選項,以避免長時間黑屏:

一,使用一個JavaFX 預加載。創建從Preloader延伸的預加載器類,並提供一個輕量級場景(即圖像)。在你的build.gradle腳本中添加preloaderClassName = 'full.preloader.class.name'

當重負載結束時(這應該在init方法中完成),應用程序將被加載,並且您可以隱藏預加載器階段。

你可以閱讀關於預加載器herehere

使用膠子手機(魅力4.0.1),使用輕量級主頁視圖加載速度不夠快,並開始在背景上加載這些繁重的任務。用戶將不得不使用某個導航按鈕或導航抽屜切換到輔助視圖,但黑屏(如果有的話)會更短。

最後使用飛濺視圖(已包含在Charm 4+中),它可以在短時間內顯示圖像或某個標籤,同時可以執行任務來加載這些沉重的組件。之後,飛濺 可以被解僱,並且主視圖將被加載。

嘗試以上任何解決方案並檢查問題是否消失。

+0

謝謝你的回覆,何塞。問題是,除了一些FXML加載之外,目前沒有做任何事情,因此無論如何應該沒有重點負擔。在Android上,您幾乎看不到本機活動的出現。目前,我只使用javafxport和一些魅力,沒有視圖的東西,所以不幸的是,現在我不能依賴它。我認爲我之前在iOS上提出的預加載器存在一些問題,所以我放棄了它,但我會再試一次。 – dzim

+0

什麼是iOS設備?一個非常簡單的項目會發生什麼? –

+0

不知道。由於我沒有這樣的設備,我需要問我的同事來測試它。我會問他,如果他能做到這一點,並會提供更多細節,好嗎? – dzim

相關問題