Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git

Migrate to JDK 17

AuthorDaveJarvis <email>
Date2021-10-02 11:19:16 GMT-0700
Commitb862d7956bb846cbdaef7e95ae787735fa25c0d4
Parentcb46ba5
Delta38 lines added, 12 lines removed, 26-line increase
src/main/java/com/keenwrite/preferences/Workspace.java
* <dd>Fully qualified file name, which includes all parent directories.</dd>
* <dt>Dir</dt>
- * <dd>Directory without a file name ({@link File#isDirectory()} is true)
- * .</dd>
+ * <dd>Directory without file name ({@link File#isDirectory()} is true).</dd>
* </dl>
*/
README.md
### Other
-Download and install a full version of [JRE 16](https://bell-sw.com/pages/downloads/?version=java-16&package=jre-full) that includes JavaFX module support, then run:
+On other platforms, start the application as follows:
-``` bash
-java --illegal-access=permit -jar build/libs/keenwrite.jar 2> /dev/null
-```
+1. Download the *full version* of the Java Runtime Environment, [JRE 17](https://bell-sw.com/pages/downloads/?version=java-17-lts&package=jre-full#mn).
+1. Install the JRE.
+1. Open a terminal window.
+1. Verify the installation: `java -version`
+1. Make `keenwrite.sh` executable.
+1. Run: `./keenwrite.sh`
-The `--illegal-access=permit` is a temporary option until third-party libraries used by the text editor are updated or replaced.
+The application is started.
## Features
build.gradle
def moduleSecurity = [
+ "--add-modules javafx.swing,javafx.controls,javafx.fxml,javafx.media,javafx.web,javafx.base,javafx.graphics",
"--add-opens=javafx.controls/javafx.scene.control=ALL-UNNAMED",
"--add-opens=javafx.controls/javafx.scene.control.skin=ALL-UNNAMED",
"--add-opens=javafx.graphics/javafx.scene.text=ALL-UNNAMED",
"--add-opens=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED",
"--add-opens=javafx.graphics/com.sun.javafx.text=ALL-UNNAMED",
+ "--add-opens=javafx.controls/javafx.scene.control.skin=org.controlsfx.controls",
+ "--add-opens=javafx.graphics/javafx.scene=org.controlsfx.controls",
"--add-exports=javafx.base/com.sun.javafx.event=ALL-UNNAMED",
"--add-exports=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED",
"--add-exports=javafx.graphics/com.sun.javafx.geom=ALL-UNNAMED",
- "--add-exports=javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED",
"--add-exports=javafx.graphics/com.sun.javafx.text=ALL-UNNAMED",
+ "--add-exports=javafx.graphics/com.sun.javafx.scene=ALL-UNNAMED",
+ "--add-exports=javafx.graphics/com.sun.javafx.scene=org.controlsfx.controls",
+ "--add-exports=javafx.controls/com.sun.javafx.scene.control=org.controlsfx.controls",
+ "--add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=org.controlsfx.controls",
+ "--add-exports=javafx.controls/com.sun.javafx.scene.control.inputmap=org.controlsfx.controls",
+ "--add-exports=javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED",
+ "--add-exports=javafx.graphics/com.sun.javafx.scene.traversal=org.controlsfx.controls",
+ "--add-exports=javafx.base/com.sun.javafx.event=org.controlsfx.controls",
+ "--add-exports=javafx.base/com.sun.javafx.collections=org.controlsfx.controls",
+ "--add-exports=javafx.base/com.sun.javafx.runtime=org.controlsfx.controls"
]
javafx {
- version = "16"
+ version = "17"
modules = ['javafx.controls', 'javafx.swing']
configuration = 'compileOnly'
}
dependencies {
def v_junit = '5.7.2'
def v_flexmark = '0.62.2'
- def v_jackson = '2.12.5'
+ def v_jackson = '2.13.0'
def v_batik = '1.14'
def v_wheatsheaf = '2.0.1'
implementation 'org.greenrobot:eventbus:3.2.0'
- // TODO: Update Workspace config to use Jackson to shave ~800kb
implementation 'org.apache.commons:commons-configuration2:2.7'
implementation 'commons-beanutils:commons-beanutils:1.9.4'
keenwrite.sh
#!/usr/bin/env bash
-java --illegal-access=permit -jar build/libs/keenwrite.jar 2> /dev/null
+java \
+ --add-modules javafx.swing,javafx.controls,javafx.fxml,javafx.media,javafx.web,javafx.base,javafx.graphics \
+ --add-opens=javafx.controls/javafx.scene.control=ALL-UNNAMED \
+ --add-opens=javafx.controls/javafx.scene.control.skin=ALL-UNNAMED \
+ --add-opens=javafx.graphics/javafx.scene.text=ALL-UNNAMED \
+ --add-opens=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED \
+ --add-opens=javafx.graphics/com.sun.javafx.text=ALL-UNNAMED \
+ --add-exports=javafx.base/com.sun.javafx.event=ALL-UNNAMED \
+ --add-exports=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED \
+ --add-exports=javafx.graphics/com.sun.javafx.geom=ALL-UNNAMED \
+ --add-exports=javafx.graphics/com.sun.javafx.text=ALL-UNNAMED \
+ --add-exports=javafx.graphics/com.sun.javafx.scene=ALL-UNNAMED \
+ --add-exports=javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED \
+ -jar build/libs/keenwrite.jar