小编Jos*_*eda的帖子

缺少Maven Shade JavaFX运行时组件

我正在尝试使用maven依赖项创建一个JFX11自包含jar.从我所做的研究来看,似乎最好的方法是通过maven shade插件.但是,当我运行它时,我收到此错误:

错误:缺少JavaFX运行时组件,并且需要运行此应用程序

我不明白为什么会这样.我搞砸了什么?有一个更好的方法吗?我也用同样的消息尝试了maven程序集插件.

pom文件供参考

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>Application</groupId>
    <artifactId>Main</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>SpaceRunner</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>10</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.6.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>Application.Main</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>
                                Application.Main
                            </mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>Application.Main</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution> …
Run Code Online (Sandbox Code Playgroud)

java javafx maven javafx-11

22
推荐指数
1
解决办法
7407
查看次数

如何使用JRE部署JavaFX 11 Desktop应用程序

我有一个JavaFX(JDK 8)桌面业务应用程序,它使用Java Web Start进行部署.用户安装了Java 8,他们只需转到URL(我的AWS Linux服务器上的公共URL),然后下载/启动应用程序(使用Web Start).我也可以通过将新JAR部署到服务器来轻松更新应用程序.一切都很好.

但是,Oracle已经停止了使用Java 11的Web Start,并且在2018年3月的"Java客户端路线图更新"白皮书中,他们建议将JRE与应用程序捆绑在一起("应用程序的概念是从独立的JRE单独分发的,因此,快速消退.").我不能依赖我的用户留在Java 8 for Web Start,即使他们仍然保持在8,Oracle也需要许可才能继续使用Java 8(我没有,可能非常昂贵,我更喜欢无论如何与社区一起走向JavaFX 11和OpenJDK).


我想迁移到JavaFX 11.我遵循OpenJFX的"JavaFX11入门"(https://openjfx.io/openjfx-docs/),使用OpenJDK 11.0.1和Gluon的JavaFX SDK 11.0.1(在Netbeans 10vc2上) ),并且已经能够运行示例应用程序(在我看来,我应该能够非常轻松地将我的JavaFX 8代码移植到JavaFX 11).

然而,这是我被困在方向的地方.如何将其与JRE捆绑在一起并将其部署到我的最终用户(并提供应用程序更新)?那里有一个简单的方法(甚至是艰难的方式,有一些方向/指南)?

我可以花几百个小时在JavaFX 11中编写富有表现力,丰富且有用的桌面业务应用程序,但我该怎么做呢?

部署工具包(如JWrapper,InstallAnywhere等)是否适合Java 11的这个新时代?Gluon/openjfx.io可能有我错过的推荐或指南吗?我似乎无法从信誉良好的来源找到任何建议或指南,因为我们开发人员如何专注于编写前端代码,以便部署应用程序.

感谢您的帮助或指导.

java javafx openjfx javafx-11

21
推荐指数
1
解决办法
7009
查看次数

如何在Android上运行JavaFX

我尝试在Android上运行一个简单的JavaFX应用程序.因此,我使用gradle来阅读javafxports入门指南来构建应用程序,但我被困在某个地方.我可以使用installDebugEclipse中的gradle任务在Android设备上构建和安装应用程序,但是,当我启动应用程序时,我得到一个黑屏.当我解压缩.apk文件时,它不包含JavaFX应用程序的jar文件.我假设apk应该包含JavaFX应用程序jar文件,但我不知道如何将其包含在.apk.

我还尝试使用gradle来构建JavaFX应用程序本身(jar文件),这很好.但是,我不知道把这个jar文件放在哪里可以包含在apk文件中.我读过我要把它放到一个dist目录中,但我认为这只会在Netbeans中使用吗?我正在使用Eclipse gradle集成来构建项目.

这是我试过的.由于JavaFX应用程序就像HelloWorld示例应用程序一样简单,并且像魅力一样工作,我希望在我的gradle构建文件中出现配置错误.

build.gradle - 构建apk

apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'android'

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'me.tatarka:gradle-retrolambda:2.5.0'
        classpath 'com.android.tools.build:gradle:1.0.1'
    }
}
repositories {
    jcenter()
}
ext {
    dalvikSdkHome = getProjectProperty('dalvikSDK')
    dalvikSdkLib = dalvikSdkHome + '/rt/lib'
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"
    dexOptions {
        preDexLibraries = false
    }
    sourceSets {
        main {
            jniLibs.srcDir file("${dalvikSdkLib}/")
            assets.srcDirs = ['assets']
        }
    }
    lintOptions {
        abortOnError false
    } …
Run Code Online (Sandbox Code Playgroud)

android javafx gradle javafxports

15
推荐指数
1
解决办法
2万
查看次数

在模块路径上使用OpenJFX 11 JMODS在JDK 11上运行javafx示例

我从OpenJFX项目下载了JavaFX Jmod文件并将它们放在目录中G:\openjfx\javafx-jmods-11.我正在使用没有JavaFX jmod的OpenJDK 11,JAVA_HOME/jmods即它没有JavaFX发行版.

模块信息文件:

module gui{
    requires javafx.graphics;
    requires javafx.controls;

    exports com.test;
}
Run Code Online (Sandbox Code Playgroud)

我编译如下:

javac -p G:\openjfx\javafx-jmods-11 -d mods --module-source-path src 
    src\gui\com\test\*.java src\gui\module-info.java
Run Code Online (Sandbox Code Playgroud)

编译成功.但我无法使用以下命令运行已编译的代码:

java -p G:\openjfx\javafx-jmods-11;mods -m gui/com.test.CreateGuiDemo
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.graphics not found, required by gui
Run Code Online (Sandbox Code Playgroud)

java javafx openjfx java-11 javafx-11

13
推荐指数
1
解决办法
2万
查看次数

创建标签时的JavaFX 11:IllegalAccessError

这个问题可能是同一个问题的这一个,但现在看来,一个的提问者还没有添加足够的信息来获得一个有用的响应。

我正在尝试使用JDK和JavaFx SDK版本11.0.2运行JavaFx应用程序。

此代码完全按预期工作,从而产生一个空窗口:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {

    public void start(Stage primaryStage) throws Exception {
        StackPane root = new StackPane();
        primaryStage.setScene(new Scene(root, 420, 420));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试向添加标签StackPane,则会引发异常。

import ...
import javafx.scene.control.Label;

public class Main extends Application {

    public void start(Stage primaryStage) throws Exception {
        StackPane root = new StackPane();
        root.getChildren().add(new Label("42"));
        primaryStage.setScene(new Scene(root, 420, 420));
        primaryStage.show();
    } …
Run Code Online (Sandbox Code Playgroud)

java javafx intellij-idea javafx-11

12
推荐指数
1
解决办法
6061
查看次数

将JFoenix库导入SceneBuilder - javaFX

我从Java 8的官方站点下载了库JFoenix.jar.

我想将该库导入Scene Builder(Gluon).但是每当我尝试导入它时,我都没有来自该库的所有元素(它错过了例如JFXButton,JFXTextarea等).

我只能导入该库中的21个元素,我不知道我做错了什么.有人可以帮忙吗?

截图:

导入库 导入库

只导入21个元素: 只能导入21个元素

javafx scenebuilder jfoenix

10
推荐指数
1
解决办法
1万
查看次数

JavaFX 8 3D场景交叉点

在JavaFX 8 3D场景中是否可以沿着光线(例如PickRay)找到点,从3D空间中的任意点开始,使用一些3D方向向量,其中光线与网格中的三角形相交(MeshView内的TriangleMesh)?

我知道这是在Camera/MouseHandler中完成的,用于鼠标拾取,但我无法看到任何方式为任意光线做这件事.

3d javafx intersection javafx-3d

8
推荐指数
2
解决办法
2308
查看次数

JavaFX在虚拟平面上使用鼠标移动3D对象

当我在JavaFX中创建我的第一个3D游戏时 - 您可以使用鼠标从零件组装船只.这提出了一个问题,因为JAVAFX似乎没有用于将PerspectiveCamera屏幕2D坐标转换为场景3D空间的原生元素.

这是我正在努力实现的目标.鼠标移动的块应在假想的平面上移动,该平面始终相对于摄像机旋转90°: 表示 我试图用三角函数解决问题而没有太大的成功.我没有附加代码片段,因为我正在寻找更通用的数学解决方案,但如果需要,我会提供它.

所有帮助将不胜感激!

期望的结果: 之前

后

3d mouse raycasting javafx-8 javafx-3d

8
推荐指数
1
解决办法
5130
查看次数

如何使用Java 11捆绑和启动本机Mac/Windows应用程序?

不幸的是,该javapackager工具将被JDK 11删除 - 因为它是JavaFX的一部分,它也将被删除.因此,不再有"官方"和简单的方法来为Mac或Windows创建本机Java应用程序包.

我试图重新使用Java 9/10的javapackager(在Mac上my.app/Contents/MacOS/my)生成的本机启动器文件,它们似乎仍然可以与JDK 11一起使用.但这有点像一个肮脏的解决方案.有关如何使用Java 11及更高版本本地打包和启动应用程序的任何想法(首选Mac平台)?

java bundle javafx javafx-11

7
推荐指数
1
解决办法
716
查看次数

从jdk跨平台删除JavaFX后会不会?

JavaFX 11是否跨平台?正如我在openjfx.org中看到的,我必须为每个平台下载版本.如果是这样,我可以以任何方式以跨平台形式使用它吗?我应该为每个java版本使用每个javafx版本吗?不要告诉我使用maven或类似的东西.我想编写一个跨平台的软件.而且每个操作系统的每个版本都没有多版本软件.我在检查操作系统后加载模块但我可以这样做吗?任何方式都有很多跨平台的库,即使它有本机代码,为什么OpenJFX不这样做呢?

java cross-platform javafx release javafx-11

7
推荐指数
1
解决办法
1139
查看次数