마이크로 서비스로 실행되는 로컬 호스트에서 간단한 JavaFx Webview 응용 프로그램을 실행하는 로컬 호스트에서 html 파일을 렌더링했습니다. 내 문제 JavaFx Webview가 인식하지 못하는 임베디드 부두 컨테이너를 사용합니다. html5 비디오 태그의 비디오 파일 소스 인 크롬, 즉 페이지를 완벽하게 렌더링하고 비디오 파일이 작동하는 다른 주요 브라우저를 사용합니다.JavaFx Webview가 로컬 호스트 서버에 html5 비디오를로드하지 않음
지금 버그가 아니거나 뭔가 혼란 스럽다.
작업 영역 파일 lyaout :
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);
}
}
나는 다음과 같은 디버깅하고 조금 더 노력하고 발견
<!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>
here you can find .mp4 video file
; 나는 그것을 직접 시도하고 확인할 수있다 : 페이지가 spark에 의해 제공 될 때, 그것은 일반 브라우저에서는 작동하지만 JavaFx WebView에서는 작동하지 않는다. 그러나 페이지가 로컬 파일 URI가있는 WebView에로드되면 비디오가 재생됩니다. 그래서 WebView는 비디오를 재생할 수 있으며, sparkjava/jetty와 WebView 사이의 통신에 뭔가가 있어야합니다. 그러나 나는 그것이 무엇인지를 발견하지 못했습니다. –