Я решил эту проблему, используя ни одного из предложенных ответов. В конце этого у меня есть несколько папок и файлов, которые я могу застегнуть и отправлять, которые не требуют установки 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 Первоначально я пытался получить .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