Я проверял другие вопросы о том же самом topi c, но не смог найти для себя конкретных c ответов.
У нас есть старый проект в Java 8, JavaFX приложение, которое мы создаем для Windows и Ma c. Я не эксперт по Java проектам, и компания, которая разрабатывает приложение, больше не доступна.
Поскольку Apple требует нотариального заверения приложения, нам это удалось. Но недавно они изменили требования, и теперь он не работает: - Бинарный файл использует SDK старше 10.9 SDK - Подпись не включает безопасную временную метку
Это также показано для множества внутренних библиотек (dylib) как Contents / MacOS / App. Но это еще одна проблема, с которой я столкнусь в будущем. Возможно, следуя этим инструкциям: Нотариально заверить существующее Java приложение для MacOS Catalina
Основная проблема в том, что мы пытались скомпилировать проект с Java 11 + JavaFX, но теперь у нас проблемы со сборкой приложение. Примечание: для этого мы просто изменили JDK 8 на JDK 11, а также загрузили и подключили библиотеку JavaFX 11.0.2.
Первая проблема заключалась в невозможности подключения библиотеку JavaFX, но нам удалось сделать это из конфигураций Run / Edit. Он устраняет проблему, но теперь при попытке запуска из Intellij он показывает такие ошибки, как:
Ошибка: (18, 27) java: пакет netscape. javascript не существует
Ошибка: (9, 24) java: пакет org.w3 c .dom. html не существует
java не удается найти символ HTMLAnchorElement
В чем проблема? Эти пакеты удалены из Java 11? Intellij позволяет мне следить за классом и находить контент.
Кроме того, мы используем Maven для создания приложения. Я пробовал редактировать конфигурацию и так далее, добавляя параметры виртуальной машины в Build, Execution, Deployment -> Maven -> Runner, но при попытке упаковать приложение не находит библиотеку JavaFX:
- module-path /path/to/javafx-sdk-11.0.2/lib --add-modules = javafx.controls, javafx.f xml
Как я предполагал чтобы загрузить модуль JavaFX в Maven?
Итак, на данный момент я включил библиотеку JavaFX в Intellij, но не могу запустить из нее и не могу включить JavaFX в Maven.
Я ценю любые рекомендации по этому поводу.
EDIT :
Мне удалось исправить ошибки netscape и HTMLAnchorElement, заменив импорт новыми:
import jdk.nashorn.api.scripting.JSObject;
Element anchorElement = (Element)event.getCurrentTarget();
И исправил проблему с javafx в maven, добавив это в pom. xml file:
<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>
Я могу запустить приложение из Intellij, но при попытке упаковать его через Maven я получил следующее:
Проблема: не удалось создать задачу или введите javafx: com.sun.javafx.tools. муравей: развернуть. Причина: Имя не определено
Связано с этим:
<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>
А это javafx.build. xml:
<?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>
Я включил файл ant-javafx.jar в проект и изменил его на это:
classpath="./ant-javafx.jar"
Но все равно не удалось создать файл «приложения» Apple:
[ОШИБКА] Не удалось выполнить целевую организацию. apache .maven.plugins: maven-antrun-plugin: 1.8: запустить (по умолчанию) в модуле приложения проекта: Возникла исключительная ситуация Ant BuildException: при выполнении произошла следующая ошибка эта строка:
[ОШИБКА] /path/to/app/javafx.build.xml:24: Ошибка: Bundler «Ma c Application Image» (ma c .app) не удалось создать пакет.
[ОШИБКА] вокруг части Ant ...... @ 4:38 в /path/to/app/target/antrun/build-build-app.xml