Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java install4j支持通过System.loadLibrary加载dyld库的代码签名MacOS控制台启动器_Java_Macos_Install4j_Dyld_Notarize - Fatal编程技术网

Java install4j支持通过System.loadLibrary加载dyld库的代码签名MacOS控制台启动器

Java install4j支持通过System.loadLibrary加载dyld库的代码签名MacOS控制台启动器,java,macos,install4j,dyld,notarize,Java,Macos,Install4j,Dyld,Notarize,我使用install4j 8.0.8创建的MacOS文件夹DMG媒体文件有问题。如果对包进行代码签名,则所有内容都会正确签名,包括驻留在lib/目录中的*.dyld文件。此外,我的GUI程序工作正常,对System.loadLibrary()的调用成功并正确加载dyld文件。但是,调用与GUI程序相同Java代码的命令行程序在到达System.loadLibrary()调用时失败,并显示以下消息: java.lang.UnsatisfiedLinkError: jhdf5 (Not found

我使用install4j 8.0.8创建的MacOS文件夹DMG媒体文件有问题。如果对包进行代码签名,则所有内容都会正确签名,包括驻留在lib/目录中的*.dyld文件。此外,我的GUI程序工作正常,对System.loadLibrary()的调用成功并正确加载dyld文件。但是,调用与GUI程序相同Java代码的命令行程序在到达System.loadLibrary()调用时失败,并显示以下消息:

java.lang.UnsatisfiedLinkError: jhdf5 (Not found in java.library.path)
    at java.base/java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1745)
    at java.base/java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:1697)
    at java.base/java.lang.System.loadLibrary(System.java:591)
但是,如果在为MacOS构建媒体文件时禁用代码签名(我通过从Ant传递disableSigning=true来实现),GUI和命令行程序都可以正常工作

所以,我可能不明白在MacOS上从控制台启动器和GUI启动器(我运行的是Big Sur)运行程序时,是否需要对Java VM参数做一些额外的操作。或者,在需要加载dyld文件的代码签名媒体文件中运行控制台启动器是不可能的?可能是因为控制台启动器是作为脚本在MacOS上实现的。install4j 8文档似乎没有提到我能找到的这种细微差别

已安装文件的目录结构如下所示:

Peters-MacBook-Pro-16:CoastWatch Utilities Signed phollema$ ll
total 4224
drwxr-xr-x  10 phollema  admin      320  9 Apr 17:25 .
drwxrwxr-x  37 root      admin     1184  9 Apr 17:24 ..
drwxr-xr-x  53 phollema  admin     1696  9 Apr 17:25 .install4j
drwxr-xr-x   3 phollema  admin       96  9 Apr 17:24 CoastWatch Utilities Uninstaller.app
drwxr-xr-x  25 phollema  admin      800  9 Apr 18:50 bin
drwxr-xr-x   3 phollema  admin       96  9 Apr 17:24 data
drwxr-xr-x   8 phollema  admin      256  9 Apr 17:25 doc
drwxr-xr-x   3 phollema  admin       96  9 Apr 17:24 extensions
drwxr-xr-x   4 phollema  admin      128  9 Apr 17:25 lib
-rw-r--r--   1 phollema  admin  1608406  9 Apr 17:12 src.zip
Peters-MacBook-Pro-16:CoastWatch Utilities Signed phollema$ ll bin
total 624
drwxr-xr-x  25 phollema  admin    800  9 Apr 18:50 .
drwxr-xr-x  10 phollema  admin    320  9 Apr 17:25 ..
-rw-r--r--@  1 phollema  admin   6148  9 Apr 18:50 .DS_Store
drwxr-xr-x   3 phollema  admin     96  9 Apr 17:24 CoastWatch Data Analysis Tool.app
drwxr-xr-x   3 phollema  admin     96  9 Apr 17:24 CoastWatch Master Tool.app
drwxr-xr-x   3 phollema  admin     96  9 Apr 17:24 CoastWatch Status Tool.app
-rwxr-xr-x   1 phollema  admin  14801  9 Apr 17:12 cwangles
-rwxr-xr-x   1 phollema  admin  14803  9 Apr 17:12 cwautonav
-rwxr-xr-x   1 phollema  admin  14829  9 Apr 17:12 cwcomposite
-rwxr-xr-x   1 phollema  admin  14827  9 Apr 17:12 cwcoverage
-rwxr-xr-x   1 phollema  admin  14805  9 Apr 17:12 cwdownload
-rwxr-xr-x   1 phollema  admin  14801  9 Apr 17:12 cwexport
-rwxr-xr-x   1 phollema  admin  14827  9 Apr 17:12 cwgraphics
-rwxr-xr-x   1 phollema  admin  14789  9 Apr 17:12 cwgscript
-rwxr-xr-x   1 phollema  admin  14823  9 Apr 17:12 cwimport
-rwxr-xr-x   1 phollema  admin  14797  9 Apr 17:12 cwinfo
-rwxr-xr-x   1 phollema  admin  14819  9 Apr 17:12 cwmath
-rwxr-xr-x   1 phollema  admin  14805  9 Apr 17:12 cwnavigate
-rwxr-xr-x   1 phollema  admin  14829  9 Apr 17:12 cwregister
-rwxr-xr-x   1 phollema  admin  14831  9 Apr 17:12 cwregister2
-rwxr-xr-x   1 phollema  admin  14823  9 Apr 17:12 cwrender
-rwxr-xr-x   1 phollema  admin  14801  9 Apr 17:12 cwsample
-rwxr-xr-x   1 phollema  admin  14841  9 Apr 17:12 cwscript
-rwxr-xr-x   1 phollema  admin  14799  9 Apr 17:12 cwstats
-rwxr-xr-x   1 phollema  admin  14763  9 Apr 17:12 hdatt
Peters-MacBook-Pro-16:CoastWatch Utilities Signed phollema$ ll lib/native/macosx_x86_64/
total 12544
drwxr-xr-x  4 phollema  admin      128  9 Apr 17:25 .
drwxr-xr-x  3 phollema  admin       96  9 Apr 17:25 ..
-rw-r--r--  1 phollema  admin  1748128  9 Apr 17:12 libjhdf.dylib
-rw-r--r--  1 phollema  admin  3536000  9 Apr 17:12 libjhdf5.dylib
DYLD_LIBRARY_PATH="$app_home/lib/native/macosx_x86_64:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH
此外,控制台启动器脚本包含一行代码,添加到
DYLD\u库\u路径中,如下所示:

Peters-MacBook-Pro-16:CoastWatch Utilities Signed phollema$ ll
total 4224
drwxr-xr-x  10 phollema  admin      320  9 Apr 17:25 .
drwxrwxr-x  37 root      admin     1184  9 Apr 17:24 ..
drwxr-xr-x  53 phollema  admin     1696  9 Apr 17:25 .install4j
drwxr-xr-x   3 phollema  admin       96  9 Apr 17:24 CoastWatch Utilities Uninstaller.app
drwxr-xr-x  25 phollema  admin      800  9 Apr 18:50 bin
drwxr-xr-x   3 phollema  admin       96  9 Apr 17:24 data
drwxr-xr-x   8 phollema  admin      256  9 Apr 17:25 doc
drwxr-xr-x   3 phollema  admin       96  9 Apr 17:24 extensions
drwxr-xr-x   4 phollema  admin      128  9 Apr 17:25 lib
-rw-r--r--   1 phollema  admin  1608406  9 Apr 17:12 src.zip
Peters-MacBook-Pro-16:CoastWatch Utilities Signed phollema$ ll bin
total 624
drwxr-xr-x  25 phollema  admin    800  9 Apr 18:50 .
drwxr-xr-x  10 phollema  admin    320  9 Apr 17:25 ..
-rw-r--r--@  1 phollema  admin   6148  9 Apr 18:50 .DS_Store
drwxr-xr-x   3 phollema  admin     96  9 Apr 17:24 CoastWatch Data Analysis Tool.app
drwxr-xr-x   3 phollema  admin     96  9 Apr 17:24 CoastWatch Master Tool.app
drwxr-xr-x   3 phollema  admin     96  9 Apr 17:24 CoastWatch Status Tool.app
-rwxr-xr-x   1 phollema  admin  14801  9 Apr 17:12 cwangles
-rwxr-xr-x   1 phollema  admin  14803  9 Apr 17:12 cwautonav
-rwxr-xr-x   1 phollema  admin  14829  9 Apr 17:12 cwcomposite
-rwxr-xr-x   1 phollema  admin  14827  9 Apr 17:12 cwcoverage
-rwxr-xr-x   1 phollema  admin  14805  9 Apr 17:12 cwdownload
-rwxr-xr-x   1 phollema  admin  14801  9 Apr 17:12 cwexport
-rwxr-xr-x   1 phollema  admin  14827  9 Apr 17:12 cwgraphics
-rwxr-xr-x   1 phollema  admin  14789  9 Apr 17:12 cwgscript
-rwxr-xr-x   1 phollema  admin  14823  9 Apr 17:12 cwimport
-rwxr-xr-x   1 phollema  admin  14797  9 Apr 17:12 cwinfo
-rwxr-xr-x   1 phollema  admin  14819  9 Apr 17:12 cwmath
-rwxr-xr-x   1 phollema  admin  14805  9 Apr 17:12 cwnavigate
-rwxr-xr-x   1 phollema  admin  14829  9 Apr 17:12 cwregister
-rwxr-xr-x   1 phollema  admin  14831  9 Apr 17:12 cwregister2
-rwxr-xr-x   1 phollema  admin  14823  9 Apr 17:12 cwrender
-rwxr-xr-x   1 phollema  admin  14801  9 Apr 17:12 cwsample
-rwxr-xr-x   1 phollema  admin  14841  9 Apr 17:12 cwscript
-rwxr-xr-x   1 phollema  admin  14799  9 Apr 17:12 cwstats
-rwxr-xr-x   1 phollema  admin  14763  9 Apr 17:12 hdatt
Peters-MacBook-Pro-16:CoastWatch Utilities Signed phollema$ ll lib/native/macosx_x86_64/
total 12544
drwxr-xr-x  4 phollema  admin      128  9 Apr 17:25 .
drwxr-xr-x  3 phollema  admin       96  9 Apr 17:25 ..
-rw-r--r--  1 phollema  admin  1748128  9 Apr 17:12 libjhdf.dylib
-rw-r--r--  1 phollema  admin  3536000  9 Apr 17:12 libjhdf5.dylib
DYLD_LIBRARY_PATH="$app_home/lib/native/macosx_x86_64:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH

如果我没有对媒体文件签名,并且控制台启动器脚本是相同的,那么所有这些都会起作用。

公证要求启用“强化运行时”,除非为启动器可执行文件设置了特定权限,否则它会阻止使用
DYLD\u LIBRARY\u PATH
。从install4j 9.0.1开始,只能为GUI启动器设置权限,而不能为捆绑JRE的java可执行文件设置权限,这是命令行启动器所需要的


但是,设置
-Djava.library.path
是一个很好的解决方案,比设置权限更可取。

什么是“我的GUI程序”和“我的命令行程序”?所有内容都驻留在同一个代码签名包中吗?所有内容都驻留在install4j安装程序安装的同一个基本目录中。我有一个名为bin/的目录,其中包含GUI启动器(名为ending in.app)和控制台启动器(仅包含bash脚本)。启动器没有签名,但DMG媒体文件已经签名并由苹果公司成功公证,DMG和JAR内部的二进制文件都已经签名并公证。我想我可能已经发现了问题,但最好得到确认。似乎如果我在控制台启动程序脚本的java命令行中添加
-Djava.library.path=$app\u home/lib/native/macosx\u x86\u 64
,它们运行良好。因此,即使设置并导出了
DYLD_LIBRARY_PATH
,签名的install4j媒体文件中包含的java可执行文件也不会侦听环境变量,而是侦听命令行参数。