2016-02-12 31 views
0

我有安裝膠子的插件,在我加載JavaFX中的WebKit瀏覽器的一些靜態HTML文件後的IntelliJ IDEA膠子JavaFX項目的HTML文件。JavaFX的,膠子:不是從Java代碼加載APK

現在,當我直接啓動JavaFX應用程序時,可以看到正在加載的HTML,但是當我創建APK時,我看不到加載的HTML。我嘗試了兩條路徑,即html/index.htmlindex.html,但對於這兩個APK在應用中未顯示任何內容,它只是加載黑屏。

根據前面關於膠子的問題,我已將靜態內容移到資源目錄中。這增加了APK的大小,這是確認靜態內容在APK中。

這裏是主類:

@Override 
public void start(Stage primaryStage) throws Exception{ 
    primaryStage.setTitle("Rewe - Frontend"); 
    java.net.CookieManager manager = new java.net.CookieManager(); 
    java.net.CookieHandler.setDefault(manager); 

    myBrowser = new MyBrowser(); 
    scene = new Scene(myBrowser, 1080, 1920); 

    primaryStage.setScene(scene); 
    primaryStage.setFullScreen(true); 
    primaryStage.show(); 

}

Mybrowser.Java:

public class MyBrowser extends Region { 

    final String hellohtml = "index.html"; 

    WebView webView = new WebView(); 
    WebEngine webEngine = webView.getEngine(); 
public MyBrowser() { 
     webEngine.getLoadWorker().stateProperty().addListener((observable, oldValue, newValue) -> { 
      if (newValue == Worker.State.SUCCEEDED) { 
       JSObject window = (JSObject) webEngine.executeScript("window"); 
       window.setMember("app", this); 
      } 
     }); 

     URL urlHello = getClass().getResource(hellohtml); 

     webEngine.load(urlHello.toExternalForm()); 
     webView.setPrefSize(1080, 1920); 
     webView.setContextMenuEnabled(false); 
} 

這裏是顯示在不同文件夾的靜態文件的截圖和Java文件以及:

enter image description here

那麼爲什麼當我打開APK我只看到一個黑屏。我只是把的「Hello world」放入index.html,即使沒有顯示。你能幫忙的話,我會很高興。謝謝。

更新

錯誤日誌與亞行:

: QuantumRenderer: shutdown 
02-12 12:49:24.539 13109 13132 W System.err: java.lang.reflect.InvocationTargetException 
02-12 12:49:24.540 13109 13132 W System.err: at java.lang.reflect.Method.invoke(Native Method) 
02-12 12:49:24.540 13109 13132 W System.err: at javafxports.android.DalvikLauncher$1.run(DalvikLauncher.java:188) 
02-12 12:49:24.540 13109 13132 W System.err: at java.lang.Thread.run(Thread.java:818) 
02-12 12:49:24.540 13109 13132 W System.err: Caused by: java.lang.RuntimeException: Exception in Application start method 
02-12 12:49:24.540 13109 13132 W System.err: at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) 
02-12 12:49:24.540 13109 13132 W System.err: at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$137(LauncherImpl.java:182) 
02-12 12:49:24.540 13109 13132 W System.err: at com.sun.javafx.application.LauncherImpl.access$lambda$1(LauncherImpl.java) 
02-12 12:49:24.540 13109 13132 W System.err: at com.sun.javafx.application.LauncherImpl$$Lambda$2.run(Unknown Source) 
02-12 12:49:24.540 13109 13132 W System.err: ... 1 more 
02-12 12:49:24.540 13109 13132 W System.err: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.net.URL.toExternalForm()' on a null object reference 
02-12 12:49:24.541 13109 13132 W System.err: at com.rewetest.MyBrowser.<init>(MyBrowser.java:69) 
02-12 12:49:24.541 13109 13132 W System.err: at com.rewetest.Main.start(Main.java:30) 
02-12 12:49:24.541 13109 13132 W System.err: at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$144(LauncherImpl.java:863) 
02-12 12:49:24.541 13109 13132 W System.err: at com.sun.javafx.application.LauncherImpl.access$lambda$8(LauncherImpl.java) 
02-12 12:49:24.541 13109 13132 W System.err: at com.sun.javafx.application.LauncherImpl$$Lambda$9.run(Unknown Source) 
02-12 12:49:24.541 13109 13132 W System.err: at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$157(PlatformImpl.java:326) 
+0

您是否嘗試過你的桌面上?如果它在桌面上不起作用,那是因爲一個已知的錯誤。 –

+0

@JoséPereda:當我只有一個JavaFX項目,沒有膠合劑,那麼它工作正常。現在,當我作爲一個應用程序加載項目時,我只是得到一個錯誤,沒有指定Android SDK。雖然我已經在jfxMobiel {android {// here}}中指定了。 –

+0

@JoséPereda:我可以給你Main和MyBrowser的Java文件。你可以試着用自己的html來查看哪些路徑有效? –

回答

0

如果使用

webEngine.load(getClass().getResource("index.html").toExternalForm()); 

你需要把資源在同一個包作爲類:

src/main/resources/com/<your package> 

,或者如果你希望把它放在一個不同的文件夾,使用「/」作爲資源的根:

webEngine.load(getClass().getResource("/html/index.html").toExternalForm()); 

這將解決NPE。

我沒有看到它在你的代碼,而是我拿你所添加的WebView現場:

public MyBrowser() { 
    ... 
    getChildren().add(webView); 
} 
+0

如果我把它放在src/java/resources/com/package-name中,就像之前說過你看不到Java文件一樣,那麼APK不會提取它。我必須把它放在src/main/resources中才能被APK選中。我有你在代碼中提到的構造函數,在這方面沒有問題。 –

+0

對不起,我的不好,我已經編輯了答案 –