WARNING: Unknown module: PDF4Teachers.merged.module specified to --add-reads
WARNING: Unknown module: PDF4Teachers.merged.module specified to --add-exports
и позже я не могу открыть PDF-файл из-за ошибки:
11:15:45.081 CONSOLE [ERROR] Exception in thread "JavaFX Application Thread" 11:15:45.082 CONSOLE [ERROR] java.lang.IllegalAccessError: class org.apache.pdfbox.io.IOUtils (in module source.merged.module) cannot access class org.apache.commons.logging.LogFactory (in module org.apache.commons.logging) because module source.merged.module does not read module org.apache.commons.logging
11:15:45.082 CONSOLE [ERROR] at source.merged.module@1.4.4/org.apache.pdfbox.io.IOUtils.(Unknown Source)
11:15:45.082 CONSOLE [ERROR] at source.merged.module@1.4.4/org.apache.pdfbox.Loader.loadPDF(Unknown Source)
11:15:45.082 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.document.render.display.PDFPagesRender.loadDocument(Unknown Source)
11:15:45.082 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.document.render.display.PDFPagesRender.(Unknown Source)
11:15:45.082 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.document.Document.(Unknown Source)
11:15:45.082 CONSOLE [ERROR] at fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.panel.MainScreen.MainScreen.lambda$openFile$41(Unknown Source)
11:15:45.082 CONSOLE [ERROR] at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
11:15:45.082 CONSOLE [ERROR] at java.base/java.security.AccessController.doPrivileged(Unknown Source)
11:15:45.083 CONSOLE [ERROR] at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(Unknown Source)
11:15:45.083 CONSOLE [ERROR] at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
11:15:45.083 CONSOLE [ERROR] at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
11:15:45.083 CONSOLE [ERROR] at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$10(Unknown Source)
11:15:45.083 CONSOLE [ERROR] at java.base/java.lang.Thread.run(Unknown Source)
Мой способ упаковки следующий:
- Сначала я запускаю задачу сборки градиента jlink, чтобы запустить jlink.
- jlink создает папку build/image с папками bin conf Legal и файлом Release.
- Я копирую эти файлы в /opt (или на самом деле $out/opt в Nix) и создаю ссылку из /bin (фактически $out/bin в Nix) на двоичный файл в $out/opt/bin/PDF4Teachers (и применяю небольшой патч для $out/opt/bin/PDF4Teachers, чтобы убедиться, что DIR указывает на правильную папку)
- (специфично для nix) Я использую wrapGAppsHook3 и autoPatchelfHook, чтобы обернуть двоичный файл кодом, специфичным для nix, для загрузки GTK3 и убедиться, что библиотека найдена правильно. Кажется, эта часть работает правильно.
$ cat result/opt/bin/PDF4Teachers
#!/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/sh
SCRIPT_NAME=$(basename "$0")
APP_NAME=${SCRIPT_NAME%.sh}
DIR=/nix/store/l0inmsysxk7lcc8fm8inhsbwf3wxz6kh-PDF4Teachers-1.4.4/opt/bin #"${0%/*}"
"$DIR/java" $CDS_JVM_OPTS --add-exports=javafx.graphics/com.sun.javafx.scene=org.controlsfx.controls --add-exports=javafx.graphics/com.sun.javafx.scene.traversal=org.controlsfx.controls --add-exports=javafx.base/com.sun.javafx.event=org.controlsfx.controls --add-reads=PDF4Teachers.merged.module=org.apache.commons.logging --add-exports=org.apache.commons.logging/org.apache.commons.logging=PDF4Teachers.merged.module -p "$DIR/../app" -m fr.clementgre.pdf4teachers/fr.clementgre.pdf4teachers.Main "$@"
Бонус: я также считаю, что в nixos можно использовать более чистый метод упаковки: я бы предпочел использовать Java, предоставленную самим nix, без использования autoPatchelfHook, но для этого мне лучше нужно найти способ сгенерировать один файл .jar вместо того, чтобы полагаться на jlink… но, учитывая, что я новичок в Java, я не уверен, как это сделать, поэтому мне интересно, есть ли у вас идеи.
Для справки, вот мой пакет nix:
{ lib
, stdenv
, fetchFromGitHub
, gradle_8
, makeWrapper
, jre
, jdk
, tree
, wrapGAppsHook3
, gobject-introspection
, autoPatchelfHook
}:
let jdkfx = jdk.override (
lib.optionalAttrs stdenv.hostPlatform.isLinux {
enableJavaFX = true;
# openjfx_jdk = openjfx.override { withWebKit = true; };
}
);
in
stdenv.mkDerivation (finalAttrs: {
pname = "PDF4Teachers";
version = "1.4.4";
src = fetchFromGitHub {
owner = "ClementGre";
repo = finalAttrs.pname;
rev = "${finalAttrs.version}";
sha256 = "sha256-0J/RVC8NXdyO1kFQOnA6TRKUBsQ6hr4bC4Ztaq1v63c=";
};
postPatch = ''
# Disable update check
substituteInPlace build.gradle \
--replace "javaHome.set('/home/clement/.jdks/corretto-21.0.4')" "javaHome.set('${jdkfx}/lib/openjdk')"
cat build.gradle
'';
nativeBuildInputs = [
gradle_8
makeWrapper
wrapGAppsHook3
gobject-introspection
autoPatchelfHook # Works but I feel like this is not the right solution
];
buildInputs = [
];
# if the package has dependencies, mitmCache must be set
mitmCache = gradle_8.fetchDeps {
# inherit (finalAttrs) pname;
pkg = finalAttrs.finalPackage;
data = ./deps.json;
};
# this is required for using mitm-cache on Darwin
__darwinAllowLocalNetworking = true;
gradleFlags = [
"-Dfile.encoding=utf-8"
];
# defaults to "assemble"
#gradleBuildTask = "shadowJar";
#gradleBuildTask = "build";
gradleBuildTask = "jlink";
#gradleBuildTask = "jar";
installPhase = ''
mkdir -p $out/{bin,opt}
cp -r build/image/PDF4Teachers-lin/* $out/opt
ln -s $out/opt/bin/PDF4Teachers $out/bin/PDF4Teachers
sleep 10
'';
postFixup = ''
substituteInPlace $out/opt/bin/PDF4Teachers \
--replace-fail 'DIR=' "DIR="$out/opt/bin" #"
'';
meta = with lib; {
homepage = "https://pdf4teachers.org/";
description = "Rediscover the annotation and grading of assessments";
license = licenses.asl20;
maintainers = with maintainers; [ tobiasBora ];
platforms = platforms.unix;
sourceProvenance = with lib.sourceTypes; [
fromSource
binaryBytecode # mitm cache
];
};
})
deps.json:
{
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
"!version": 1,
"https://clojars.org": {
"repo/google-diff-match-patch#google-diff-match-patch/0.1": {
"jar": "sha256-CmgZSv2aZhfjSWfaHXcxe+mHz7Mi79wt0Id0cAR1JW8=",
"pom": "sha256-3GD/0wLNVGlMAmEmVn0QAUopCSrrzZw50DxBq4GElcI="
}
},
"https://jitpack.io": {
"com/github/Dansoftowner#jSystemThemeDetector/3.9.1": {
"jar": "sha256-eJ+Z9+T6fOzZ/N9Rrclxjodtmr5MQ+dIAZn5dDgynxM=",
"module": "sha256-J/HNSDQmh7t/zYkB8N58yoEyrm2qG3fG3gKN54uXItc=",
"pom": "sha256-+JipzNZJVA17d97rnodpuPgkJFboCsZz2wJaDaR8bEk="
}
},
"https://plugins.gradle.org/m2": {
"com/google/code/findbugs#jsr305/3.0.2": {
"jar": "sha256-dmrSoHg/JoeWLIrXTO7MOKKLn3Ki0IXuQ4t4E+ko0Mc=",
"pom": "sha256-GYidvfGyVLJgGl7mRbgUepdGRIgil2hMeYr+XWPXjf4="
},
"com/google/gradle#osdetector-gradle-plugin/1.7.3": {
"jar": "sha256-a0aS+ROiGx+2Axae54uo8+SrKvnXYq+cqIt5EmwcCtE=",
"pom": "sha256-hGDJUBJ8o1mHZhYeOLT/jWO01p+4MQoW4As1E1ABDBE="
},
"kr/motd/maven#os-maven-plugin/1.7.1": {
"jar": "sha256-9Hru+Ggh5SsrGHWJeL0EXwPXIikuMudHCCEixiKJUuA=",
"pom": "sha256-S3WABEIrljPdMY8p54Tx0YC9ilkgzVCvGTCGH21qVHY="
},
"org/beryx#badass-jlink-plugin/3.0.1": {
"jar": "sha256-dgjXY18yKiLff//d+IiBuTngqBDuUmoqTFPFN7/WT4Y=",
"module": "sha256-b3ksJpweGUNdCWcOtY12cyOFm2Hpt9YcZLPMdHK8Qgo=",
"pom": "sha256-OwPpihIF17Spe7jcvlkCs6AW4D+FACDzkjuIWomh2zM="
},
"org/beryx/jlink#org.beryx.jlink.gradle.plugin/3.0.1": {
"pom": "sha256-MRg/jaYel0ILAf4NarvkrGfgYY5PxAEyfBu8HvoBCqw="
},
"org/gradlex#extra-java-module-info/1.8": {
"jar": "sha256-DmUlngVgVRWF8m7nmpxu3KZKvLJrRqMI4IkQHYxRjZI=",
"module": "sha256-QeguoT4SwDPQxnUenEUDi39pKmfsaBX/rXGGvnIADJE=",
"pom": "sha256-9vDz0yriO3QAVWsooBUT8VwUFfLnVtj5Av4UOfNknB0="
},
"org/gradlex/extra-java-module-info#org.gradlex.extra-java-module-info.gradle.plugin/1.8": {
"pom": "sha256-jig1ITCS2OahjUwF9APLaTKStj3hPolMR9l/c0T401w="
},
"org/openjfx#javafx-plugin/0.1.0": {
"jar": "sha256-Xq7sB5m0QGRrDKTP2iGaMttr4rpXktAyoNpKOlw4j6s=",
"module": "sha256-rf+3RA0kntF8BJOD1nBp+UU7F3gncMAFtoKkNBbYNmE=",
"pom": "sha256-NMjfVSfrWjXl8AmjzeH3oInEzkoOclgC8uy+UDu9PLY="
},
"org/openjfx/javafxplugin#org.openjfx.javafxplugin.gradle.plugin/0.1.0": {
"pom": "sha256-1tASf/Q2PQAXPDV6mByec+/wPDCl0Ohq2CtgVPrvqEE="
},
"org/ow2#ow2/1.5.1": {
"pom": "sha256-Mh3bt+5v5PU96mtM1tt0FU1r+kI5HB92OzYbn0hazwU="
},
"org/ow2/asm#asm/9.6": {
"jar": "sha256-PG+sJCTbPUqFO2afTj0dnDxVIjXhmjGWc/iHCDwjA6E=",
"pom": "sha256-ku7iS8PIQ+SIHUbB3WUFRx7jFC+s+0ZrQoz+paVsa2A="
},
"org/sonatype/oss#oss-parent/7": {
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
},
"org/sonatype/oss#oss-parent/9": {
"pom": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno="
}
},
"https://repo.maven.apache.org/maven2": {
"com/adobe/xmp#xmpcore/6.1.11": {
"jar": "sha256-j3AzxXm5n6DZ1t3LlEiHW15LV3w1AAInjORpl9Z4tzc=",
"pom": "sha256-cZEYGCECwlM+kqL2fANRAmTmFgVxpzishj51cSQXMj0="
},
"com/drewnoakes#metadata-extractor/2.19.0": {
"jar": "sha256-5Ru0VO0I6iv8w60UfQiK0apzqZngByVj+K5QAhovyts=",
"pom": "sha256-fqXDxPtl2ERBve2oMsDprgToozurEcr4J6tOWXtjsu0="
},
"com/fasterxml#oss-parent/58": {
"pom": "sha256-VnDmrBxN3MnUE8+HmXpdou+qTSq+Q5Njr57xAqCgnkA="
},
"com/fasterxml/jackson#jackson-base/2.17.1": {
"pom": "sha256-4K78YdOPzd2VX/7sAbt1EE8bv/+jpuy1jb50r7cV4yI="
},
"com/fasterxml/jackson#jackson-bom/2.17.1": {
"pom": "sha256-n0RhIo4SkQPu16MC3BABqy5Mgt086pFcKn27jMYe/SU="
},
"com/fasterxml/jackson#jackson-parent/2.17": {
"pom": "sha256-rubeSpcoOwQOQ/Ta1XXnt0eWzZhNiSdvfsdWc4DIop0="
},
"com/fasterxml/jackson/core#jackson-core/2.17.1": {
"jar": "sha256-3bJsih8ahFNeghPEizWyUzcENOMoezzxV3eFb8TljOY=",
"module": "sha256-iowJZP38Js7bso2CXfRiGBf7jNIrnnpZ2cdKOl8b3R0=",
"pom": "sha256-2UiDEgmgTAE5G5Oq7nrTShyelIY/nnaFwvW2FJoqs50="
},
"com/github/davidmoten#sonatype-parent/0.1": {
"pom": "sha256-9Q5Goo6n4j+EMErZ/xsqWJskdSy0R9nq7eb1r4T56s4="
},
"com/github/jai-imageio#jai-imageio-core/1.4.0": {
"jar": "sha256-itPGjp7/+xCsh/+LxYmt9ksEpynFGUwHnv0GQ2B/1yo=",
"pom": "sha256-Ac0LjPRGoe4kVuyeg8Q11gRH0G6fVJBMTm/sCPfO8qw="
},
"com/github/jai-imageio#jai-imageio-jpeg2000/1.4.0": {
"jar": "sha256-B/tuOjBAEiuEbF5SUgAzF1wyUeLsiDDfgvh8sh84i7E=",
"pom": "sha256-jQd0KBAHliclrx93swfN6BbP1+4loQxTI3nW41ZMvh4="
},
"com/github/oshi#oshi-core/5.8.6": {
"jar": "sha256-avZFtrMZxaH+alrAPB+0seypajtifK6JU1L5ibcgkBc=",
"pom": "sha256-iNcNOxnby2YuXDxFceX8mavCZldu+Cv6u7RGkm9MISo="
},
"com/github/oshi#oshi-parent/5.8.6": {
"pom": "sha256-Fe+B2OTv+TYQPJ+HYGMM7LNXs5OGTFuvnKWHQTOzkMc="
},
"com/google/code/gson#gson-parent/2.8.6": {
"pom": "sha256-NzZGOFnsGSZyleiUlAroKo9oRBMDESL+Nc58/34wp3Q="
},
"com/google/code/gson#gson/2.8.6": {
"jar": "sha256-yPtIOQVNKAswM/gA0fWpfeLwKOuLoutFitKH5Tbz8l8=",
"pom": "sha256-IXRBWmRzMtMP2gS9HPxwij7MhOr3UX9ZYYjYJE4QORE="
},
"com/opencsv#opencsv/5.9": {
"jar": "sha256-ICOWm4bOlorYrlSWSKxYfRQcGa5oSppcZ8kQXzerDRw=",
"pom": "sha256-l+UC78Xmwt0VZiGynKy8D0dEIowAmPaxafV/eukwMGA="
},
"commons-beanutils#commons-beanutils/1.9.4": {
"jar": "sha256-fZOMgXiQKARcCMBl6UvnX8KAUnYg1b1itRnVg4UyNoo=",
"pom": "sha256-w1zKe2HUZ42VeMvAuQG4cXtTmr+SVEQdp4uP5g3gZNA="
},
"commons-collections#commons-collections/3.2.2": {
"jar": "sha256-7urpF5FxRKaKdB1MDf9mqlxcX9hVk/8he87T/Iyng7g=",
"pom": "sha256-1dgfzCiMDYxxHDAgB8raSqmiJu0aES1LqmTLHWMiFws="
},
"commons-io#commons-io/2.11.0": {
"jar": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=",
"pom": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k="
},
"commons-logging#commons-logging/1.2": {
"pom": "sha256-yRq1qlcNhvb9B8wVjsa8LFAIBAKXLukXn+JBAHOfuyA="
},
"commons-logging#commons-logging/1.3.0": {
"jar": "sha256-ZtPJgEcLmbDFEdrT38CueyZewfsUTpa8AlOooXX9NNk=",
"pom": "sha256-je/afOtIiP/k1OYyeJVqGjxRS3W4Nj1nFqG9Zv6WLH8="
},
"de/jangassen#jfa/1.2.0": {
"jar": "sha256-8cwY8VldRBroOc2hRlwIsefbRrcsHX87NzIK4WQexys=",
"pom": "sha256-tNgod+BwsV0dTmdrQV9qVCnw4i3U75gX2F5MWcU7yr8="
},
"de/jangassen#nsmenufx/3.1.0": {
"jar": "sha256-cpEcwG3rujj45dA57CNC0u5nYhijMjqpWlzIqDOn3fQ=",
"pom": "sha256-RNGXv3eGUMJC0dats3Jt12D0yBywQcmX2S2yMhxR8Q4="
},
"de/rototor/pdfbox#graphics2d/3.0.2": {
"jar": "sha256-nc6GQd/8dloE2+FArgSvmH5B1CTuGfa50eNNkcMk2/s=",
"pom": "sha256-Hgmt+QDxAKt1bYYczLSDTIyqSa09PE+gre9BLyhJBvQ="
},
"de/rototor/pdfbox#pdfboxgraphics2d-parent/3.0.2": {
"pom": "sha256-2Bdl+fRUlr5Fii0++4JK1mpg9+mJR2hSl4hyUio5gfE="
},
"io/github/g00fy2#versioncompare/1.4.1": {
"jar": "sha256-0mgnvHDjpuBw9bco4vhNvwopE5siGBr2Vm4MFvCNRGU=",
"module": "sha256-rHAoh4apAuF5CeYvf7dyrkIcRgqxDnIAtQIfWONIE2w=",
"pom": "sha256-6nUQLRXjrmYp7wResnYd5EAyW24RYSjC8P1MFj3Slj0="
},
"net/java/dev/jna#jna-platform/5.12.1": {
"jar": "sha256-jOlpEWyslb1hsHqNXgcXSzUuYzAUc8qscsOV48CEiNI=",
"pom": "sha256-wnn/o7UWjiIDCHIxxjiRmnzsdFgAaxzaZpWXR4YPtFc="
},
"net/java/dev/jna#jna/5.12.1": {
"jar": "sha256-kagUrE9A1g3ukdhC4aith0xiGXmEQD0OPDDTnlXPU7M=",
"pom": "sha256-Zf8lhJuthZVUtQMXeS9Wia20UprkAx6aUkYxnLK4U1Y="
},
"org/apache#apache/13": {
"pom": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0="
},
"org/apache#apache/16": {
"pom": "sha256-n4X/L9fWyzCXqkf7QZ7n8OvoaRCfmKup9Oyj9J50pA4="
},
"org/apache#apache/18": {
"pom": "sha256-eDEwcoX9R1u8NrIK4454gvEcMVOx1ZMPhS1E7ajzPBc="
},
"org/apache#apache/19": {
"pom": "sha256-kfejMJbqabrCy69tAf65NMrAAsSNjIz6nCQLQPHsId8="
},
"org/apache#apache/21": {
"pom": "sha256-rxDBCNoBTxfK+se1KytLWjocGCZfoq+XoyXZFDU3s4A="
},
"org/apache#apache/23": {
"pom": "sha256-vBBiTgYj82V3+sVjnKKTbTJA7RUvttjVM6tNJwVDSRw="
},
"org/apache#apache/29": {
"pom": "sha256-PkkDcXSCC70N9jQgqXclWIY5iVTCoGKR+mH3J6w1s3c="
},
"org/apache#apache/3": {
"pom": "sha256-OTxQr7S3qm61flN3pVoaBhCxn3W1Ls4BMI2wShGHog4="
},
"org/apache#apache/30": {
"pom": "sha256-Y91KOTqcDfyzFO/oOHGkHSQ7yNIAy8fy0ZfzDaeCOdg="
},
"org/apache#apache/31": {
"pom": "sha256-VV0MnqppwEKv+SSSe5OB6PgXQTbTVe6tRFIkRS5ikcw="
},
"org/apache#apache/7": {
"pom": "sha256-E5fOHbQzrcnyI9vwdJbRM2gUSHUfSuKeWPaOePtLbCU="
},
"org/apache/commons#commons-collections4/4.4": {
"jar": "sha256-Hfi5QwtcjtFD14FeQD4z71NxskAKrb6b2giDdi4IRtE=",
"pom": "sha256-JxvWc4Oa9G5zr/lX4pGNS/lvWsT2xs9NW+k/0fEnHE0="
},
"org/apache/commons#commons-lang3/3.13.0": {
"jar": "sha256-gvUoz3GMejwvMPxbx4TjxqChCxdgXa254WyC7eEeYGQ=",
"pom": "sha256-/3zqTrI53WIRdRDavlGo1fDJ5MxCa8PowsIhpxj4ZIQ="
},
"org/apache/commons#commons-parent/34": {
"pom": "sha256-Oi5p0G1kHR87KTEm3J4uTqZWO/jDbIfgq2+kKS0Et5w="
},
"org/apache/commons#commons-parent/39": {
"pom": "sha256-h80n4aAqXD622FBZzphpa7G0TCuLZQ8FZ8ht9g+mHac="
},
"org/apache/commons#commons-parent/47": {
"pom": "sha256-io7LVwVTv58f+uIRqNTKnuYwwXr+WSkzaPunvZtC/Lc="
},
"org/apache/commons#commons-parent/48": {
"pom": "sha256-Hh996TcKe3kB8Sjx2s0UIr504/R/lViw954EwGN8oLQ="
},
"org/apache/commons#commons-parent/52": {
"pom": "sha256-ddvo806Y5MP/QtquSi+etMvNO18QR9VEYKzpBtu0UC4="
},
"org/apache/commons#commons-parent/58": {
"pom": "sha256-LUsS4YiZBjq9fHUni1+pejcp2Ah4zuy2pA2UbpwNVZA="
},
"org/apache/commons#commons-parent/64": {
"pom": "sha256-bxljiZToNXtO1zRpb5kgV++q+hI1ZzmYEzKZeY4szds="
},
"org/apache/commons#commons-parent/65": {
"pom": "sha256-bPNJX8LmrJE6K38uA/tZCPs/Ip+wbTNY3EVnjVrz424="
},
"org/apache/commons#commons-text/1.11.0": {
"jar": "sha256-Ks8woHCxkWPVpIDq5BGigTQehwAg41NMbV1MhHJznjA=",
"pom": "sha256-O0AZecBkEoXYUM8Ri04Y8EmsIj3Hherk0LNXKPxTTRE="
},
"org/apache/pdfbox#fontbox/3.0.2": {
"jar": "sha256-ds8EEOkD49txQDKvu0WNWiO5IlO5/fiAA18J6orTraw=",
"pom": "sha256-hthT5W8q+Yb6c1s/kH6jh6KXNCLH0F8TwDasuRNal90="
},
"org/apache/pdfbox#jbig2-imageio/3.0.4": {
"jar": "sha256-KcspUWIvEKz2H9BlbE5vpVYhlKkJX3odJqpCbi9rF+s=",
"pom": "sha256-KOp8SskuCYX3lqi8aJCnvviSZwetrf0eLIVsmwvho4s="
},
"org/apache/pdfbox#pdfbox-io/3.0.2": {
"jar": "sha256-nW535C437zaC53aBEpwxRRXog9UKvB3aljguejHnDjg=",
"pom": "sha256-yD3gYR+UMN4W2dakjfXJEPgrkfHgU1xB9Woy9iYwz0c="
},
"org/apache/pdfbox#pdfbox-parent/3.0.2": {
"pom": "sha256-kN6rEjTjkUu8B07Ax3Y7+kFHgICziISpOwtVVxnWY0g="
},
"org/apache/pdfbox#pdfbox/3.0.2": {
"jar": "sha256-yv4sysEB6ao63z9+p23/AuWIWislWLdfr/l0dvBIfuI=",
"pom": "sha256-wMNAwn6AF2V+Y81PaJUG8U03Y10NFebRpAjysZFGax8="
},
"org/apache/xmlgraphics#batik-awt-util/1.17": {
"jar": "sha256-f+OPlFHrlFdSFDIyYcgZK2Px39JhBlklX7u7/elKKmY=",
"pom": "sha256-K0uhvyKqtiKmdyIXZTnRlWJ92KVfggGRq0udbh/PrgI="
},
"org/apache/xmlgraphics#batik-constants/1.17": {
"jar": "sha256-ddsAGAveTvXK7jkW1vZeUEUFHVnPUdV+ZzwDlp17u80=",
"pom": "sha256-BtbvBrb+NCkKDiopaz95YejFX18VgvCVIcguAAt5Px8="
},
"org/apache/xmlgraphics#batik-i18n/1.17": {
"jar": "sha256-1aZGgDY+ezaz8ow0o6U2126Ef3fOwHQKq3x5mme1LYs=",
"pom": "sha256-LczXNOp8Pf3cOQDcrOgYGIsUZsAq6dqK4wpwj3Tw9MI="
},
"org/apache/xmlgraphics#batik-parser/1.17": {
"jar": "sha256-XkSLv69hJ1Z/QfaY7iWtebhENjBxwS0RdYlseIkXF9c=",
"pom": "sha256-O4WKAV0DzUCF+HnRF81IbyijM3IIG0oRL/w5OjPzMOs="
},
"org/apache/xmlgraphics#batik-shared-resources/1.17": {
"jar": "sha256-XXQYK5yhns2NSBTy/0tCpK7qbhiXfpBcyE6Kb4GUDJ8=",
"pom": "sha256-ut4U1rq9//BiLBjNPCUf9flZN4MFieL2jgO92nu1RxE="
},
"org/apache/xmlgraphics#batik-util/1.17": {
"jar": "sha256-oeT3Q8i4CsaC7dSzl/qkrELeWRNDA2MkyA7o8ilzyXY=",
"pom": "sha256-gtWFfUG9TeWskX7sgSoz0zKXN04UOAew4KYt7KBVofk="
},
"org/apache/xmlgraphics#batik-xml/1.17": {
"jar": "sha256-+8wjAAZqxAQodsUsMnrN8LUVli8WkEAO16eO0sDUwbQ=",
"pom": "sha256-0ypeBt4LkxxN2ebgS/oSQHwkNwmmmNdpZ7TnkYoPLn0="
},
"org/apache/xmlgraphics#batik/1.17": {
"pom": "sha256-D9ZlDtWtkmuw6X2xx/yMJqQOOmtrShOxR2XryjKvsTo="
},
"org/apache/xmlgraphics#xmlgraphics-commons/2.9": {
"jar": "sha256-Lr0zOrKmJFFHk8M2468IZghnMob+N7oeY54Kw+G1i+I=",
"pom": "sha256-CS1SCmHKS4pFkEN0JMQhzbDPQOeYrs7PKwUm8q+PH4g="
},
"org/controlsfx#controlsfx/11.2.1": {
"jar": "sha256-63VY0JTDa4Yw6oqab40k+K9F0ak6N14R4gbXbAgiFDA=",
"pom": "sha256-veC6xL8EPqp19uTOEbpXfHneak+5Mfd1e93Y36MwKTc="
},
"org/jetbrains#annotations/24.0.0": {
"jar": "sha256-/xEvVM6HS4romc/WjwMV2WyfQGozi47KgMdtEOLlovc=",
"pom": "sha256-q4eN2sP6teB48NqVHqvWf77d09KvFzn+t/lHFgJ1Xws="
},
"org/jfxtras#jmetro/11.6.16": {
"jar": "sha256-X6v+k5kULSxCzepdifdJ0n1e8N01698l4LYwkspZ3vE=",
"pom": "sha256-zRJGTYfPiIZTRNQ12wQtbuNsHgs+C+ik+orKAn4r/Ws="
},
"org/junit#junit-bom/5.10.0": {
"module": "sha256-6z7mEnYIAQaUqJgFbnQH0RcpYAOrpfXbgB30MLmIf88=",
"pom": "sha256-4AbdiJT5/Ht1/DK7Ev5e2L5lZn1bRU+Z4uC4xbuNMLM="
},
"org/junit#junit-bom/5.10.1": {
"module": "sha256-IbCvz//i7LN3D16wCuehn+rulOdx+jkYFzhQ2ueAZ7c=",
"pom": "sha256-IcSwKG9LIAaVd/9LIJeKhcEArIpGtvHIZy+6qzN7w/I="
},
"org/junit#junit-bom/5.10.2": {
"module": "sha256-3iOxFLPkEZqP5usXvtWjhSgWaYus5nBxV51tkn67CAo=",
"pom": "sha256-Fp3ZBKSw9lIM/+ZYzGIpK/6fPBSpifqSEgckzeQ6mWg="
},
"org/junit#junit-bom/5.7.2": {
"module": "sha256-87zrHFndT2mT9DBN/6WAFyuN9lp2zTb6T9ksBXjSitg=",
"pom": "sha256-zRSqqGmZH4ICHFhdVw0x/zQry6WLtEIztwGTdxuWSHs="
},
"org/junit#junit-bom/5.9.3": {
"module": "sha256-tAH9JZAeWCpSSqU0PEs54ovFbiSWHBBpvytLv87ka5M=",
"pom": "sha256-TQMpzZ5y8kIOXKFXJMv+b/puX9KIg2FRYnEZD9w0Ltc="
},
"org/openjfx#javafx-base/22": {
"pom": "sha256-XPr4AKyei29O5+mOaRZvN0PAo+xyLhx8idLaEzmgQIE="
},
"org/openjfx#javafx-base/22/linux": {
"jar": "sha256-guS1JYZGAz4MvYzoYKBZWGDIwNeOrfXKWQ9FNps7PQ8="
},
"org/openjfx#javafx-controls/22": {
"pom": "sha256-8AZSRCn/IPdz+tfjwXq9/qkkzMeqGamSoeQZPl/kCA8="
},
"org/openjfx#javafx-controls/22/linux": {
"jar": "sha256-4E5POGe18PR56yKJsDgwPOn7TR3vImvJHCkYlpvzW2s="
},
"org/openjfx#javafx-fxml/22": {
"pom": "sha256-N2R+Lpsq+3hcJKu2GjjD5p02av/TUyv6J+jIrm92tPI="
},
"org/openjfx#javafx-fxml/22/linux": {
"jar": "sha256-K5X/HQ+4GUIrIU2Xs423Bc2alyMK41P0kr3UiJujqdY="
},
"org/openjfx#javafx-graphics/22": {
"pom": "sha256-snXDI9Pbr1/anOegMkG/JEvfeJ5GFON+pMPjww4P858="
},
"org/openjfx#javafx-graphics/22/linux": {
"jar": "sha256-ACrpnQ8ML2Clh72fkRaP7lvZ2AJ4H0eXV1lWz0icJLs="
},
"org/openjfx#javafx-swing/22": {
"pom": "sha256-wPQryYkBk3076g85BuQT1HvgXNsaWu7FbRw5JD2DM5w="
},
"org/openjfx#javafx-swing/22/linux": {
"jar": "sha256-JTdrxDkPNwbv3wlfQLGAZt9DWkNlufS99GGOWFZexZA="
},
"org/openjfx#javafx/22": {
"pom": "sha256-ZO+kxQXukz+S0/4hqQ7RVKKs1Dhif6hKHYG7jRZWN58="
},
"org/scilab/forge#jlatexmath-font-cyrillic/1.0.7": {
"jar": "sha256-GgFQ5L5k24jCUN/0H1kzSfVfDJz9uOOUM/Fbpz7NIbg=",
"pom": "sha256-kburwRXaL3ZznId52afCXWmNjI5/CRCrqgehNwO2oi0="
},
"org/scilab/forge#jlatexmath-font-greek/1.0.7": {
"jar": "sha256-zdx+fm8+f/BDTIpIBercPp3IBFfVgtGcNpnmqu6PavI=",
"pom": "sha256-Y4k7Qay6GJQvIt8WO5Cex5yqLzRxjXvmJEeNQ7P6/mo="
},
"org/scilab/forge#jlatexmath-parent/1.0.7": {
"pom": "sha256-1dUNpkwZJfPGVwiUI2nakFsYSyIBB5ueJntlLWM5Beg="
},
"org/scilab/forge#jlatexmath/1.0.7": {
"jar": "sha256-bQTDhD/JjS7qm6TP8L57gFQMp1xaTgs0Y/0SGcSMxl0=",
"pom": "sha256-w7H6Icz/7VRUA6U8EPte8MoMrT+ZCLIASoIjaItyLcg="
},
"org/slf4j#slf4j-api/1.7.32": {
"jar": "sha256-NiT4R0wa9G11+YvAl9eGSjI8gbOAiqQ2iabhxgHAJ74=",
"pom": "sha256-ABzeWzxrqRBwQlz+ny5pXkrri8KQotTNllMRJ6skT+U="
},
"org/slf4j#slf4j-parent/1.7.32": {
"pom": "sha256-WrNJ0PTHvAjtDvH02ThssZQKL01vFSFQ4W277MC4PHA="
},
"org/sonatype/oss#oss-parent/7": {
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
},
"org/yaml#snakeyaml/2.2": {
"jar": "sha256-FGeTFEiggXaWrigFt7iyC/sIJlK/nE767VKJMNxJOJs=",
"pom": "sha256-6YLq3HiMac8uTeUKn2MrGCwx26UGEoMNNI/EtLqN19Y="
},
"tk/pratanumandal#unique4j/1.4": {
"jar": "sha256-iggqU749AnoVauGgtfb+iGNzH2QSasQTW/t//3efc+s=",
"pom": "sha256-m59rkEM/a/ImQgXLfuTZz5PBGgzq9B05b6neU88o80Q="
},
"xml-apis#xml-apis-ext/1.3.04": {
"jar": "sha256-0LSIfcNNV95JB0pYr/rUOaAT0Lr/oagDT47ypeoZFkY=",
"pom": "sha256-G1k5qTEKWcDfDANyZyHV/JUh6H1sIDv6ciC66Cow2eg="
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... to-add-exp
Мобильная версия