Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WebEngine赢得';在linux上加载浏览器_Java_Linux_Javafx 2_Javafx - Fatal编程技术网

Java WebEngine赢得';在linux上加载浏览器

Java WebEngine赢得';在linux上加载浏览器,java,linux,javafx-2,javafx,Java,Linux,Javafx 2,Javafx,我已经用java编写了一个小脚本,可以打开一个全屏webview,加载一个特定的.html文件,这个程序应该可以在linux上运行,但事实似乎并非如此。 下面是我用来打开web视图的代码: public class MainBrowser extends Application { private Scene scene; @Override public void start(Stage stage) { // create the scene

我已经用java编写了一个小脚本,可以打开一个全屏webview,加载一个特定的.html文件,这个程序应该可以在linux上运行,但事实似乎并非如此。 下面是我用来打开web视图的代码:

public class MainBrowser extends Application {
    private Scene scene;
    @Override 
    public void start(Stage stage) {
        // create the scene
        stage.setTitle("Web View");

        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        double width = screenSize.getWidth();
        double height = screenSize.getHeight();

        scene = new Scene(new Browser(),width,height, Color.web("#666970"));
        stage.setScene(scene);
        //scene.getStylesheets().add("webviewsample/BrowserToolbar.css");
        stage.setFullScreen(true);
        stage.show();
    }

    public static void main(){
        launch();
    }
}

package monitor;

import java.io.File;
import java.net.URL;

import javafx.geometry.HPos;
import javafx.geometry.VPos;
import javafx.scene.Node;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;


class Browser extends Region {

    final WebView browser = new WebView();
    final WebEngine webEngine = browser.getEngine();

    public Browser() {
        //apply the styles
        getStyleClass().add("browser");
        // load the web page
        File openpage = new File(Config.PAGE_LOCAL_URL);
        webEngine.load(openpage.toURI().toString());
        //add the web view to the scene
        getChildren().add(browser);

    }
    private Node createSpacer() {
        Region spacer = new Region();
        HBox.setHgrow(spacer, Priority.ALWAYS);
        return spacer;
    }

    @Override protected void layoutChildren() {
        double w = getWidth();
        double h = getHeight();
        layoutInArea(browser,0,0,w,h,0, HPos.CENTER, VPos.CENTER);
    }

    @Override protected double computePrefWidth(double height) {
        return 750;
    }

    @Override protected double computePrefHeight(double width) {
        return 500;
    }
}
它在windows上似乎工作得很好,但当我在linux上运行程序时,它会冻结,我甚至没有遇到异常,它只是冻结关闭。
这是我第一次接触linux,我希望比我更专业的人能帮助我了解问题所在。

在同一线程上混合使用AWT和JavaFX代码可能会导致问题,不推荐使用。尝试只使用JavaFX方法;e、 g.
Screen.getPrimary().getVisualBounds()
或代替
Toolkit.getDefaultToolkit().getScreenSize()
。AWT-JFX混合会在mac上造成非常严重的问题-当然。我按照你的建议做了,但仍然会出现错误,仍然没有例外,程序在编辑代码后冻结,我发现我缺少一个库:/i386/libglass。所以问题是我在任何地方都找不到它,甚至在javafx安装中也找不到。有人能帮忙吗?我很好奇这个问题是否解决了。我在Linux上安装的Java 7和8都包括libglass.so。如果不是所有的Linux系统,那么现在是否期望webview只在大多数Linux系统上工作?