【发布时间】:2016-08-12 11:33:15
【问题描述】:
我设法运行简单的 JavaFx Webview 应用程序,在 localhost 上运行在嵌入式码头容器中使用的微服务 Spark web framework 渲染一个 html 文件我的问题是 JavaFx Webview 无法识别 html5 视频的视频文件源在使用 chrome、ie 和其他主要浏览器时标记页面完美呈现并且视频文件正在工作。
我现在不知道这是错误还是我搞砸了。
这是我的问题的工作快照:
工作区文件布局:
Workspace/Work-directory
.
├── public
| └── index.html
| └── video.mp4
└── src
└── main
| └── java
| └── com
| └── mycompany
| └── MainTest.java
| └── SparkTest.java
└── pom.xml
依赖关系(pom.xml):
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.5</version>
</dependency>
SparkTest.java
package com.mycompany;
import spark.Spark;
public class SparkTest {
public static void main(String[] args) {
Spark.staticFiles.externalLocation("public");
Spark.get("/run", (request, response) -> "Spark is Runnig");
}
}
MainTest.java
package com.mycompany;
import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class MainTest extends Application {
@Override
public void start(Stage stage) throws Exception {
StackPane root = new StackPane();
WebView view = new WebView();
view.getEngine().load("http://127.0.0.1:4567/index.html");
root.getChildren().add(view);
Scene scene = new Scene(root, 800, 600);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) throws IOException {
Application.launch(args);
}
}
index.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>html5 video</h1>
<video controls preload="auto" width="640" height="480">
<source src="video.mp4" type='video/mp4'>
</video>
</body>
</html>
【问题讨论】:
-
我看不出你做错了什么;我自己尝试过,可以确认:当页面由 spark 提供时,它适用于普通浏览器,但不适用于 JavaFx WebView。但是当页面在带有本地文件 URI 的 WebView 中加载时,视频就会播放。所以WebView可以播放视频,sparkjava /jetty和WebView的通信肯定有问题,但是我没找到可能是什么。
标签: java video webview jetty spark-java