Вопрос Где взять JavaFX 8?

q20w26a

Разработчик
Такие дела, понадобилось использовать JavaFX, в OpenJDK 8 оно больше не поставляется, OpenJFX я найти не могу для 8, есть только для 11, 14 и 15, но мне нужно для 8. Предлагают ставить OpenJDK 11.
 

q20w26a

Разработчик
BlackBarcode13, было включено, я хорошо помню.
Нашел зато это: https://benjamin-brummer.de/downloads/
Авто объединение сообщений:

Заработало, а как это будет работать у кончного пользователя - вопрос другой
 
Последнее редактирование:

CarryLove

Пользователь
JavaFX включён в стандартную библеотеку Java. Если-же ты пишешь лаунчер на Java 9 и выше, то нужно добавлять в module-info.java
это:
Java:
  requires javafx.base;
  requires javafx.controls;
  requires javafx.graphics;
  requires javafx.fxml;
мой build.gradle:
Код:
plugins {
  id 'java'
  id 'application'
  id 'groovy'
  id 'checkstyle'
  id 'io.freefair.lombok' version '5.1.0'
  id 'org.beryx.jlink' version '2.20.0'
}

repositories {
  jcenter()
  mavenCentral()
  maven {
    url = 'http://arinonia.chaun14.fr/maven/'
    name = 'ArinoniaMaven'
  }
  maven {
    url  "https://dl.bintray.com/dua3/public"
  }
}

ext {
  javaVersion = JavaVersion.VERSION_13
  javafxVersion = '13.0.2'

  // Encoding
  defaultEncoding = 'UTF-8'

  // Platform
  os = org.gradle.internal.os.OperatingSystem.current()
  platformModifier = os.isWindows() ? 'win' : (os.isLinux() ? 'linux' : 'mac')

  // Log
  logDir = file("${projectDir}/log")

  // Copyright
  defaultCopyright = 'Copyright (C) 2020 Lion Kapitman'

  // Tools version
  checkstyleVersion = '8.34'
  lombokVersion = '1.18.12'

}

dependencies {
  implementation(
    "org.openjfx:javafx-base:${javafxVersion}:${platformModifier}",
    "org.openjfx:javafx-controls:${javafxVersion}:${platformModifier}",
    "org.openjfx:javafx-graphics:${javafxVersion}:${platformModifier}",
    "org.openjfx:javafx-fxml:${javafxVersion}:${platformModifier}",
    "org.openjfx:javafx-swing:${javafxVersion}:${platformModifier}",
    "org.openjfx:javafx-web:${javafxVersion}:${platformModifier}",
    "org.openjfx:javafx-media:${javafxVersion}:${platformModifier}",
    'org.slf4j:slf4j-api:2.0.0-alpha1',
    'ch.qos.logback:logback-classic:1.3.0-alpha4',
    'com.google.code.gson:gson:2.8.0',
    'de.jensd:fontawesomefx-controls:11.0',
    'de.jensd:fontawesomefx-commons:11.0',
    'de.jensd:fontawesomefx-fontawesome:4.7.0-11',
    'de.jensd:fontawesomefx-icons525:3.0.0-11',
    'de.jensd:fontawesomefx-materialdesignfont:1.7.22-11',
    'de.jensd:fontawesomefx-materialicons:2.2.0-11',
    'de.jensd:fontawesomefx-materialstackicons:2.1-11',
    'de.jensd:fontawesomefx-octicons:4.3.0-11',
    'de.jensd:fontawesomefx-weathericons:2.0.10-11'
  )
  testImplementation(
    // JUpiter
    'org.junit.jupiter:junit-jupiter-api:5.7.0-M1',
    // Spock
    'org.spockframework:spock-core:2.0-M3-groovy-3.0',
  )
  testRuntimeOnly(
    // JUnit 5
    'org.junit.jupiter:junit-jupiter-engine:5.7.0-M1',
  )
}

clean {
  delete "${logDir}"
}

java {
  sourceCompatibility = javaVersion
  targetCompatibility = javaVersion
  modularity.inferModulePath = true
}

lombok {
  version = lombokVersion
}

application {
  mainModule = 'hello'
  mainClassName = 'ru.akman.jfx.App'
}

[compileJava, compileTestJava].each {
  it.options.encoding = defaultEncoding
  it.options.compilerArgs += [
    // Give more detail for unchecked conversion warnings that are mandated
    // by the Java Language Specification.
    '-Xlint:unchecked',
    // Show a description of each use or override of a deprecated member
    // or class. Without this, javac shows a summary of the source files
    // that use or override deprecated members or classes.
    '-Xlint:deprecation',
    // Terminate compilation if warnings occur.
    '-Werror',
  ]
}

test {
  useJUnitPlatform()
  jvmArgs = [
    "-Dfile.encoding=${defaultEncoding}",
  ]
  reports {
    html.enabled = true
  }
}

tasks.withType(Test) {
  testLogging {
    showExceptions = true
    showCauses = true
    showStackTraces = true
    displayGranularity = 2
    exceptionFormat = 'short'
    showStandardStreams = true
    events(
      // 'started',
      'passed',
      'skipped',
      'failed',
      // org.gradle.api.tasks.testing.logging.TestLogEvent.STANDARD_ERROR,
      // org.gradle.api.tasks.testing.logging.TestLogEvent.STANDARD_OUT,
    )
    debug {
      displayGranularity = 0
      exceptionFormat = 'full'
      events(
        'started',
        'passed',
        'skipped',
        'failed',
      )
    }
  }
}

// javadoc {
//   failOnError = false
//   options.encoding defaultEncoding
//   options.addStringOption 'bottom', defaultCopyright
//   options.addBooleanOption 'html5', true
//   options.addBooleanOption 'notimestamp', true
// }

jar {
  manifest {
    attributes(
      'Main-Class': "${mainClassName}",
    )
  }
}

task fatJar(type: Jar) {
  archiveAppendix = 'full'
  manifest {
    attributes(
      'Main-Class': "${mainClassName}",
    )
  }
  from {
    configurations.runtimeClasspath.collect {
      it.isDirectory() ? it : zipTree(it)
    }
  }
  with jar
}

task sourcesJar(type: Jar, dependsOn: classes) {
  classifier 'sources'
  from sourceSets.main.allSource
}

// task javadocJar(type: Jar, dependsOn: classes) {
//   classifier 'javadoc'
//   from javadoc
// }

artifacts {
  // archives sourcesJar, javadocJar, fatJar
  archives sourcesJar, fatJar
}

distributions {
  main {
    contents {
      // from(javadocJar) {
      //   into 'docs'
      // }
      from(sourcesJar) {
        into 'docs'
      }
    }
  }
}

run {
  standardInput = System.in
}

checkstyle {
  // The version of the code quality tool to be used.
  toolVersion = checkstyleVersion

  // The Checkstyle configuration file to use.
  // https://github.com/checkstyle/checkstyle/tree/master/src/main/resources
  configFile = file("${projectDir}/config/checkstyle/google_checks.xml")

  // Whether to allow the build to continue if there are warnings.
  ignoreFailures = true

  // The maximum number of errors that are tolerated before breaking
  // the build or setting the failure property.
  // maxErrors = 20

  // The maximum number of warnings that are tolerated before breaking
  // the build or setting the failure property.
  // maxWarnings = 50

  // Whether rule violations are to be displayed on the console.
  showViolations = true

  // The directory where reports will be generated.
  // reportsDir = file("${project.reporting.baseDir}/checkstyle")
}
jlink {
  jpackage {
    jpackageHome = System.getenv('JPACKAGE_HOME')
  }
}
Авто объединение сообщений:

Такие дела, понадобилось использовать JavaFX, в OpenJDK 8 оно больше не поставляется, OpenJFX я найти не могу для 8, есть только для 11, 14 и 15, но мне нужно для 8. Предлагают ставить OpenJDK 11.
JavaFX был представлен как часть выпуска Java 8. Однако позже он был удален из JDK и
перенесен в отдельный модуль в Java 11.

Это означает, что если вы ориентируетесь на Java 8-10, у вас есть все необходимые зависимости как часть вашего JDK уже. Ура! Если вы используете более новую версию Java — то есть 11+, вам нужно получить зависимости отдельно.
Авто объединение сообщений:

Такие дела, понадобилось использовать JavaFX, в OpenJDK 8 оно больше не поставляется, OpenJFX я найти не могу для 8, есть только для 11, 14 и 15, но мне нужно для 8. Предлагают ставить OpenJDK 11.
Так-же, я делаю лаунчер на JavaFX 8. вот мой билд для сборки javafx 8. (Собираю приложение javafx 8, java 11)
Код:
/*
* This file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java project to get you started.
* For more details take a look at the Java Quickstart chapter in the Gradle
* User Manual available at https://docs.gradle.org/6.5.1/userguide/tutorial_java_projects.html
*/

plugins {
    // Apply the java plugin to add support for Java
    id 'java'

    // Apply the application plugin to add support for building a CLI application.
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.9'
    id 'edu.sc.seis.launch4j' version '2.4.6'
}

sourceCompatibility = 1.8
compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'

repositories {
    // Use jcenter for resolving dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
    maven{
        url = 'http://arinonia.chaun14.fr/maven/'
        name = 'ArinoniaMaven'
    }
}

dependencies {
    // This dependency is used by the application.
    implementation 'com.google.guava:guava:29.0-jre'

    // Use JUnit test framework
    testImplementation 'junit:junit:4.13'
    compile group: 'de.jensd', name: 'fontawesomefx', version: '8.9'
    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0'
    compile group: 'fr.arinonia', name: 'arilibfx', version: '1.0.5'
    compile group: 'net.lingala.zip4j', name: 'zip4j', version: '2.6.0'

}

application {
    // Define the main class for the application.
    mainClassName = 'com.github.lkapitman.Main'
}
jar {
    manifest {
        attributes 'Main-Class': 'com.github.lkapitman.Main'
    }
    from {
        configurations.compile.collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
}
javafx {
    modules = [ 'javafx.controls', 'javafx.fxml' ]
}

launch4j {
    jar = "${projectDir}/build/libs/Fxlauncher.jar"
    outfile = 'CustomNPCsForever.exe'
    mainClassName = 'com.github.lkapitman.Main'
    icon = "${projectDir}/src/main/resources/img/icon.ico"
    jreMinVersion = '1.8.0'
    jreMaxVersion = '1.8.0_111'
    jdkPreference = 'preferJdk'
}
Авто объединение сообщений:

Такие дела, понадобилось использовать JavaFX, в OpenJDK 8 оно больше не поставляется, OpenJFX я найти не могу для 8, есть только для 11, 14 и 15, но мне нужно для 8. Предлагают ставить OpenJDK 11.
Ну так что? Я помог?
 
Последнее редактирование:

q20w26a

Разработчик
Еще не знаю, но это полезная информация. Я почему то не додумался подключить jcenter сразу...
 

Phantomchik

Команда форума
Модератор
Вы нашли ответ на свой вопрос? Если да, то пожалуйста, выберите лучший ответ и пометьте тему как решённую.
 

Комнаты в чате

Верх Низ