Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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
从JavaFX1.8迁移到Java11+;JavaFX和Maven_Java_Maven_Javafx_Java 11 - Fatal编程技术网

从JavaFX1.8迁移到Java11+;JavaFX和Maven

从JavaFX1.8迁移到Java11+;JavaFX和Maven,java,maven,javafx,java-11,Java,Maven,Javafx,Java 11,我一直在检查关于同一主题的其他问题,但我找不到具体的答案 我们有一个Java8的老项目,这是我们为Windows和Mac构建的JavaFX应用程序。 我不是Java项目专家,开发该应用程序的公司也不复存在 由于苹果要求对应用程序进行公证,我们设法做到了。但他们最近更改了要求,现在失败了: -二进制文件使用比10.9 SDK旧的SDK -签名不包括安全时间戳 这显示了大量的内部库(dylib)以及Contents/MacOS/App。 但这是我将来要面对的另一个问题。可能遵循以下说明: 主要的问

我一直在检查关于同一主题的其他问题,但我找不到具体的答案

我们有一个Java8的老项目,这是我们为Windows和Mac构建的JavaFX应用程序。 我不是Java项目专家,开发该应用程序的公司也不复存在

由于苹果要求对应用程序进行公证,我们设法做到了。但他们最近更改了要求,现在失败了: -二进制文件使用比10.9 SDK旧的SDK -签名不包括安全时间戳

这显示了大量的内部库(dylib)以及Contents/MacOS/App。 但这是我将来要面对的另一个问题。可能遵循以下说明:

主要的问题是我们试图用Java11+JavaFX编译这个项目,但是现在我们在构建应用程序时遇到了问题。 注意:为了做到这一点,我们只需将JDK 8更改为JDK 11,并下载和附加JavaFX11.0.2库

第一个问题是无法附加JavaFX库,但我们通过运行/编辑配置成功地实现了这一点。 它修复了该问题,但现在尝试从Intellij启动时,会显示以下错误:

错误:(18,27)java:包netscape.javascript不存在

错误:(9,24)java:package org.w3c.dom.html不存在

java找不到符号HtmlanchoreElement

这里有什么问题?这些包是否已从Java11中删除?Intellij允许我跟踪课程并查找内容

此外,我们使用Maven构建应用程序。我尝试过编辑配置等,在Build、Execution、Deployment->Maven->Runner中添加VM选项,但在尝试打包应用程序时,它找不到JavaFX库:

--模块路径/path/to/javafx-sdk-11.0.2/lib——添加模块=javafx.controls,javafx.fxml

我应该如何在Maven中加载JavaFX模块

所以现在我已经在Intellij中包含了JavaFX库,但无法从中启动,也无法在Maven中包含JavaFX

我非常感谢您的指导

编辑:

我通过用新的导入替换导入,成功修复了netscape和HtmlanchoreElement错误:

import jdk.nashorn.api.scripting.JSObject;


Element anchorElement = (Element)event.getCurrentTarget();
并通过在pom.xml文件中添加以下内容修复了maven中javafx的问题:

    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-base</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-media</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-swing</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-web</artifactId>
        <version>11</version>
    </dependency>
但在创建苹果“应用程序”文件时仍然失败:

[错误]无法执行目标org.apache.maven.plugins:maven antrun插件:1.8:run(默认)on project app module:发生Ant BuildException:执行此行时发生以下错误:

[错误]/path/to/app/javafx.build.xml:24:错误:捆绑程序“Mac应用程序映像”(Mac.app)无法生成捆绑包

[错误]蚂蚁部分周围……@4:38 in/path/to/app/target/antrun/build-build-app.xml


自JDK11以来,JavaFX已从JDK中删除。您可以按照以下步骤操作:

因为您的项目依赖于外部库,所以我建议使用非模块化形式的JavaFX项目。如果使用IntelliJ和Maven,建议使用:

JavaFX和IntelliJ->带有Maven的非模块化

JavaFX和IntelliJ->带渐变的非模块化


这样,您就不再需要下载和附加JavaFXSDK或jmods;因为您使用的构建工具(Maven/Gradle)将自动为您的项目下载这些库和包。

谢谢您,阿米尔!问题不在于添加JavaFX库。我将检查如何将其作为非模块化表单包含,但我现在的首要任务是能够生成DMG文件
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <configuration>
                        <target name="build-app">
                            <ant antfile="./javafx.build.xml"/>
                        </target>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <phase>package</phase>
                        </execution>
                    </executions>
                </plugin>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="create-app" name="AppName"  xmlns:fx="javafx:com.sun.javafx.tools.ant" xmlns:if="ant:if"
         xmlns:unless="ant:unless">
<taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
         uri="javafx:com.sun.javafx.tools.ant"
         classpath=".;${java.home}/../lib/ant-javafx.jar"/>

<condition property="onmac">
    <os family="mac"/>
</condition>

<condition property="onwin">
    <os family="windows"/>
</condition>

<target name="create-app" description="create jar file fx" if="os.name">
    <echo message="Ant creates javafx app" />

    <fx:deploy width="800" height="600" outdir="target/dist" outfile="App" nativeBundles="image" version="1.4.5">
        <fx:info title="App Name">
            <fx:icon href="installable/mac/logo.icns" kind="default"  if:set="onmac" ></fx:icon>
            <fx:icon href="src/main/resources/resources/logo_256.ico" kind="default"  if:set="onwin"></fx:icon>
        </fx:info>

        <fx:application name="App Name" mainClass="recorder.DesktopRecorder" />
        <fx:resources>
            <fx:fileset dir="target/app-module-1.4.5-distribution" includes="*"/>
        </fx:resources>
    </fx:deploy>


    <exec executable="./installable/mac/create-dmg.sh"  if:set="onmac"/>
    <exec executable="C:\Program Files (x86)\Inno Setup 5\ISCC" if:set="onwin">
        <arg value="installable/windows/innosetup_prod.iss" />
    </exec>

</target>
classpath="./ant-javafx.jar"