Изменить реализацию Javafx 11 в Intellij из «Build and Run с вариантами JVM внутри IDE», чтобы «создать изображение времJAVA

Программисты JAVA общаются здесь
Anonymous
Изменить реализацию Javafx 11 в Intellij из «Build and Run с вариантами JVM внутри IDE», чтобы «создать изображение врем

Сообщение Anonymous »

edit #3 (solution) < /h2>

Я решил эту проблему, используя ни одного из предложенных ответов. В конце этого у меня есть несколько папок и файлов, которые я могу застегнуть и отправлять, которые не требуют установки Java, и которые можно запустить, дважды щелкнув .BAT-файл. Следующая процедура сработала для меня: < /p>
  • Создайте новый проект Gradle с нуля < /p> < /li>
    Добавить все модули/код в папку src/main/java
  • Создайте Applauncher.java, который вызывает Главный метод
  • Переместите все FXML/CSS из одного из Java-Folders к ресурсам
  • Убедитесь, что ваши вызовы FXML-/CSS-Files не рефакторированы ошибочно и используйте следующий код:

Код: Выделить всё

//Main start method
Parent root = FXMLLoader.load(new File("fxml/main.fxml").toURI().toURL());

//Other FXML loading operations
FXMLLoader loader = null;
try { loader = new FXMLLoader(new File("fxml/GRAPHISO_proof.fxml").toURI().toURL()); }
...
< /code>

и для таблиц стилей: < /p>

scene.getStylesheets().add("file:///" + new File("css/text-field-red-border.css").getAbsolutePath().replace('\\', '/'));
  • Создать модуль info.java внутри папки SRC/Main/Java с этой структурой:
    < /ul>

    Код: Выделить всё

    module XYZ {
    requires javafx.controls;
    requires javafx.graphics;
    requires java.desktop;
    requires javafx.fxml;
    requires javafx.base;
    
    opens main.controller to javafx.fxml;
    //Open ALL controller-modules (all of my modules have a controller-submodule, e.g. main/controller, dlog/controller, graphiso/controller, ...) to javafx.fxml
    //...
    
    exports main;
    }
    < /code>
    
    
    [*]  Убедитесь, что Gradle /warper /gradle-wrapper.properties устанавливается на не очень самую версию Gradle (distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
    )
  • Используйте это в качестве build.gradle:

Код: Выделить всё

buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath 'org.openjfx:javafx-plugin:0.0.8'
classpath 'com.github.jengelman.gradle.plugins:shadow:5.2.0'
}
}

plugins {
id 'java'
id 'org.beryx.jlink' version '2.19.0'
}

apply plugin: 'org.openjfx.javafxplugin'
apply plugin: 'com.github.johnrengelman.shadow'

group 'org.example.abc'
version '1.0'

sourceCompatibility = 1.14

repositories {
mavenCentral()
}

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}

javafx {
sdk = 'C:\\Program Files\\Java\\javafx-sdk-14.0.1'
modules = [ 'javafx.controls', 'javafx.fxml', 'javafx.base' ]
}

jlink {
mainClassName = 'main.AppLauncher'
launcher {
name = 'Whatever you want as name'
}
}

tasks.jlink.doLast {
copy {
from('src/main/resources')
into("$buildDir/image/bin")
}
copy {
from 'C:\\Program Files\\Java\\javafx-sdk-14.0.1\\bin\\glass.dll',
'C:\\Program Files\\Java\\javafx-sdk-14.0.1\\bin\\javafx_font.dll',
'C:\\Program Files\\Java\\javafx-sdk-14.0.1\\bin\\prism_d3d.dll',
'C:\\Program Files\\Java\\javafx-sdk-14.0.1\\bin\\prism_sw.dll'
into("$buildDir/image/bin")
}
}
< /code>

Примечание, как я включил несколько дел в задачах. Без них программа продолжает ругаться и относится к квантовому обращению. < /p>


[*] Установите двоичные файлы openjdk-14.0.1 и установите ваш % java_home %. Указано выше) < /li>
< /ul>



 исходный вопрос < /h2>

Я пытаюсь создать изображение времени выполнения из проекта, который я реализовал в Javafx 11, просто используя функциональность «Конфигурация запуска» в IntelliJ. Мне кажется, что большая проблема в том, что мои знания о Maven /Gradle практически не существуют, и что эти инструменты сборки имеют решающее значение для этого шага.  < /P>

внутри C : \ Program Files \ Java < /code> Я установил: < /p>


javafx-sdk-11.0.2
и
[*]

Код: Выделить всё

jdk-13.0.2< /code> < /li>
< /ul>

Я настроил варианты виртуальной машины внутри "Конфигурации запуска", чтобы быть--модуль-пат "c: \ program Files \ java \ javafx-sdk-11.0.2 \ lib "-add-modules javafx.controls, javafx.fxml 
и установите основной класс на "main.main". Java является обычным основным файлом (расширение приложения, вызывая запуск (args) внутри Main). Он может загружать другие окна, расположенные в других пакетах. Это не файл пускового установки, который не расширяет применение и вызывает фактическое основное файл (как предложено несколькими решениями для строительства градл).

Первоначально я пытался получить .jar-файл, который можно запустить без каких-либо дополнительных параметров в Windows и Linux. После некоторого чтения я подумал, что это не будет чистым решением, и многие источники заявили, что в современных решениях. /p>

Мой вопрос: как мне лучше всего продолжить и какие конфигурации /дополнительные файлы мне нужны для преобразования этого проекта «Click-to-in-ide-ide» в »в« автономное применение " что я могу поделиться по электронной почте или аналогично? ) и скопировал исходные файлы в SRC/Main/Java. Затем я попробовал предоставленную Build.gradle -file и - после этого не сработало - внес некоторые изменения, предложенные различными блогами/форумами/и т. Д. Никто из них не позволил мне запустить проект через IntelliJ или из командной строки. Запустите «или вызов" java -Jar file.jar "Я получил сообщения об ошибках из -за исключений класса или сказать, что я все еще не пропускаю модули Javafx. Я также попробовал подход для преобразования моего текущего проекта в градл-проект, но это даже не позволило бы мне построить проект впоследствии. < /P>



edit #1 (jpackagescriptfx) < /h2>

Я посмотрел jpackagescriptfx-link. Теперь я получаю установщик (используя MVN Clean Install ), который работает на моей машине, но при запуске полученного исполняемого файла я получаю сообщение об ошибке, в котором говорится «не удалось запустить JVM».

То, что я сделал до сих пор: < /p>


Установлен JDK-120.1 и установите Java_Home В Установлен Wix311
[*] создал новый проект Intellij Maven под названием «bachelor_maven»
[*] src-folder
[*] добавил новый модуль "zkp_inspector" и мои старые модули внутри полученных src/main/java folder
[*] добавлен и отредактировал src/main/logo/windows/duke.ico, два файла pom.xml и build_app.bat от Jpackagescriptfx
[*] реализованный Applauncher.java, который вызывает Main.java < /p> < /li>
< /ul>

Файлы моей конфигурации: < /p>

Новая структура проекта: imgur < /p> < /li>
pom.xml (уровень проекта, bachelor_maven): Pastebin
[*]pom.xml (уровень модуля, zkp_inspector): pastebin
build_app. BAT: Pastebin < /p> < /li>
< /ul>



edit #2

Я попытался удалить-runtime-image target/java-runtime ^ из параметров jpackage в build_app.bat Файл, чтобы позволить jpackage решать, что включить. Это увеличило размер файла установщика (как и ожидалось), но приводит к той же ошибке при попытке выполнить полученную программу. их в задаче jlink в build_app.bat, как намекал здесь. %DETED_MODULES%,%manual_modules% ^< /code> с < /p>

Код: Выделить всё

--module-path "C:\Program Files\Java\javafx-jmods-11.0.2" --add-modules %detected_modules%,%manual_modules%,javafx.controls,javafx.fxml


Это создало еще одного установщика, который работал нормально и чья результирующая программа бросала ту же ошибку.

Подробнее здесь: https://stackoverflow.com/questions/620 ... vm-options

Вернуться в «JAVA»