Java 作为JPackage安装的一部分,如何在linux中使本机linux应用程序可执行

Java 作为JPackage安装的一部分,如何在linux中使本机linux应用程序可执行,java,linux,java-14,jpackage,Java,Linux,Java 14,Jpackage,我正在使用JPackage(Java14)为linux打包一个Java应用程序(称为Jaikoz) java应用程序有时必须调用名为fpcalc64的c程序,在安装时它会存储在app文件夹中,但它只有rw权限 问题1 作为安装的一部分,我有没有办法授予它执行权限 问题2 即使我手动进入应用程序文件夹并使用chmod 777 fpcalc64授予完全执行权限,它仍然没有运行,我的Java程序抱怨它没有权限,即使我重新启动应用程序,这种情况仍然会发生,这怎么可能 e、 g 失败 但是如果我从Linu

我正在使用JPackage(Java14)为linux打包一个Java应用程序(称为Jaikoz)

java应用程序有时必须调用名为fpcalc64的c程序,在安装时它会存储在app文件夹中,但它只有rw权限

问题1

作为安装的一部分,我有没有办法授予它执行权限

问题2

即使我手动进入应用程序文件夹并使用
chmod 777 fpcalc64
授予完全执行权限,它仍然没有运行,我的Java程序抱怨它没有权限,即使我重新启动应用程序,这种情况仍然会发生,这怎么可能

e、 g

失败

但是如果我从LinuxShell运行,它可以工作

ubuntu@ubuntu:~/code/jthink/jaikoz/JaikozAppImage/jaikoz/lib/app$ ls -l fpcalc*
-rwxrwxrwx 1 ubuntu ubuntu 2210876 Jul  4 11:15 fpcalc
-rwxrwxrwx 1 ubuntu ubuntu 2249272 Jul  4 11:15 fpcalc64
ubuntu@ubuntu:~/code/jthink/jaikoz/JaikozAppImage/jaikoz/lib/app$ ./fpcalc64 /home/ubuntu/Downloads/Red*
FILE=/home/ubuntu/Downloads/RedSharp_-_Walk_in_the_row.mp3
DURATION=273
FINGERPRINT=AQADtIsURmsSDc9i44-Iqsemr8a1MIOXKBHCi9CJ0M7R-MH5oNNy_Dp26ag55EmUJ5DjI-zREE-P9wz-odeKCyGbHXriIj8qbiYaPRue4_zx7MHHE1eiw1yE80d1IdmDnDy-LCeub_gVVLkGP8uHmTNhVjkicUeyh0MTHs_RE8-Jurg7XItwHVl-aFmHPGMq_Al-NCGFx0d6adD6I39RnQoaTXmK48JhTqOM58R19LED8yBf9LvQo1GW4viRk4Qm6cUvpHlRi8dn9MngFqRy-EdGlNPxHbp8oR8aLnvBLkb_4I8KS9Kh57jEKsOv4nD04UeZmZDyC64efLB1jK8Oj8hP-BSuF7aQ92h-4h1eKJJ1wYErregFzTWaH_m14Q--o9nsEe47Ij_EG33GI8e14xQf1Eifo5Z03IeeK2C0ODGaD6xl5Kh9OD68HdfwhuiPH33x9kg7HdpRuQgjnbiOe8Sn0EJt-AsR6sVxPQr65vg0aM8KjeTB5Hi4RviLJqYI7QoqsTApR4PPJwi_9LiHJmWCfmiyODWYX0OTLzfCB1c-4UQf6Dj0p3gH7xH8o8-Ja4rxoz--CHpy-EWPH_2h5dODUoaWmDmeo4ko5UKbzQquNJmGypnRfIEmkUEeRcZzVNwSBv3RsBo4dUZu6HKHrgkk-aiVPUR-vNJQ-WgYx-ija7hGZCc0_ngQ6gt8432Cpk6Fp0dzIjx03AjThOGO5lfwLMWF9MIX5Qp0NFn04w5vNFUufNGhpWJcPIrR4CS-5RHK_9BSDXcIPyZ-HOdBv3hQbjKafxA8adXw49OFPEWjFrWy42FD9Irh6sgrodEuPG0CmclSXNA6wmMGbb3QTTwa8cGDPoPHHddycXijBdKNvGD-4CyRb8F3wV-c4LXBKxHywNlB9kf3C7YeNHQCcsaJ_IOWPZEQHz-e6DhFnFFwIvyhE2ePfDnyY8pz6IJ1uMoO7WGIp8fXM9gqpsITdNnRkDu0RYdjPcHHoMl_qL4F9gjDMSUOKj8YTlF8NDtRoeqGpjv4MwiTN4WG-OFhTUuMVUly9FHRcD3wHTl0ZUO46miyfcFz1Dr8HLYZtMtxS0P4Q26OfBpcFd-xySx64gadHWF2QeYxHb8SCuWSHV6iS3gG44fHoM0wLzqa8NvxV3ihmUeuXLiUXeiF5iCPlzijWEIiqk-QH490PDnqo3mOv-Dk44qMTyEajauCqyfCvNAzNOPRL7hyQs3AH8e-ZBx6K_CPib3AaMrRKMePoel79Ieu4seXD0-uQI_RrDOGcsFz_CG-Q6OPs4fxHY90KNdKuOqPThX2x2jqoFV2BXK0R9Cpw8-KnIyPH48O7ngySujbJPAyFln4Qz-meCtKXSPy4zq6oqlyfDu-6MFNo3kQXtARcXvw4Dn6rQkY5ccVBv5wSTVyXKIOPVEOLUm_oC_2aGhqtAuaS0XZQ-ml4dC_4x_6TEO-qPBuHFRSHWEfmTjyb2ge9PEwnDhznEeYZw4OHdEzo8-L97gSXPLxojn7IKShbw_KHmEaBedBeifK4_sRppK64HkLXXnwHc0JbT8eqUT84OTxobKI9chv6PAe1CqDXEEppceRE1Oh6wquD_mM__B5ZGfx5YSu1OjRaH_QC9cOmWkBVzNYhkG1FxXFB155pE7wE39wTkmPSqeGI48P7UWqLqh19EfzlAS_408RXvDRHjpx4X6CHrkTGF15PEd2PUOrPPBxirg147tQlcepoz-a57gYEXqO3oOZN1AdPNMRWsePatsxRUd05oLuEz--En-HNq4Cxy0xrUflHmKVY3eh5Tl-_EPtUAg3H3m1GB3roWEkgQ9raOFHhA_hE99w6qjFw9pmdC06Ssh9MN3xB-mk4sLZTkV5mJPg6UevNjhlXLrQIFTUqZDyIf3xo77wpWiFO0HzCz_y458CPcOPhmCeDJcfPDjaw1aOE99YOCf0Hb-KJ6oAXTLxIz6u5YJvF33RH3ZytMgP6D_aa_iF_RE2hzCjKAFO9mj2GMc7Bs-O_6FwC02g9Qf35Xge4kPeG0ye43mCWjROvEa8Cc2Xoudx5Ceeo-Ee_PgjtfAT_Pjg_sgH-Q_C_MS9FGel4fjAMqimg8n649uDnEH1QfnhaUerHFeP_hGa88iF_sfV4WQ1nMfWC0dKp9BDNF9oPMFx_dDuIb3wk_CFtyZRXA7-4NNBTpa0IMweyEc-pnCVHJ8eWDum48sPxMWe51C9GY2eDvuFh1kCOdmxK4zQR-gPP8YZWjDXeNCXzLDmHNUjHFS-4hp-4moQi3yOU0IfNLJyXNJl9Dya7PmGf0d2aMdD9UhDJTpOYdyyoLrw40yOPCJ0lkH1G34t6MyPNEsiXSi1WegrWDn6rXh49N8RrSIS6zt85uiNP_hBEz4xysJnhCp1XDo-VVJg5slw4D0q4Uoe_KiuFL6CHipd5AmLRw-aL3GKacGRJzqSO3FwJi9-4c6Ekzm2G5eOW7GQK8pHNLF0dMWVQ2wm44FGIgxfvBSeJ8N9TAmp4LngXngraUGkLJAb9EOjkfg-4nF8bHqg8wKeHFf2oPqD5j_UDz_eLMV1fLlRwyPRZyyU7_jwREaYaWjH42WTEI2-ok6KXFGIH-KY-PiO64fOo3uQxtHhSaSIp0_gE0e6EhV1QldyGfl8-ErxCx-e6LiyNLiCKecBghQiADHAADJMAGeMMFoQAYA0kgCECSNEEKIQIIAII5QwBhACHABGAKWEEo4oQgVjggIBERGAOYGQIqgxJIBEAihHkQIMIWGAAggJBIAgAhEhkCJCQMEUMQQqIpQCQhgFhNUAAAIAck4IQQABLhEBgEHCGCMUUERgDARhQCipmEBACFgQAIIITZAAABACiABACGFIYEsAIoFQABoIFEgICAECAgI4AQggyghIgQNeCAMEIYAwgARCTgiSADCMUkGEIUAQwhgBQgABhJCKWEIFssAAaZQxQjFiiGKCCAGAUIAYo4RCkCEggCJSCEiBIcAwQokQBgECCJIECCUEM1ABBAgRkAICDCLCEEOEQwIRQRhCwFkAEGQGCY8UQ0AQAS4SAAhBFDEEWAEYIYwJoygAghmKAEAKEQIAEvIoQoAkCgJhiEKKECYgI8YhIglgyBgCACJAIASEMEgoooQRSCLCACGEGAMQIIQxJKBAwBgIkFBIAEMAIQQapZwzQgmBiCKIEeG5AUgYAwwDQhAEFHBAMAWIAA4QZCARyEKAIDHEEqIMAAQAYYAUFgBLjAACGYaAEIoAxggCgghiBEBgGGAAQ4AhAgAiBjkBAUHGEIeAABRQI4gAgBmhBCLGMQSAA8QJgBQABhlnFKAAAEqYAAYI5ABSTiilBBIGCMGoMGIAYRBghiEjgGACEUOREIICgQgASBklCHBAAIEUAgQBZgQSApCDlEKQAAIUcgYwA4AhgCpkgEAKGgQVUIYAxYASwDCiHALAEQcUAMICIQhRABJAiGYIACMIQUQgRYAzBCjABAHOACAUA0YQAABwRCIBwEFcCAIAAkAQgQgxDAgigDAKSEaQYEwQRBgSBjEhDDJIEOUEQUgBQqhBxAiACAMECEoYYYQRYYAQABkEEBBECEYEQoYQBBkSBBggiUFAAiIIIUKyIggABACAAAIDAA
问题3

我是否必须将fpcalc64存储在bin文件夹中,而不是lib/app中。如果我这样做了,我该怎么做,它是一个预编译的二进制文件?

我找到了解决方案(我以前遇到过)

因为Java 9在linux上使用Java调用外部应用程序时使用
lib/jspawnhelper
来决定如何运行应用程序。因为我提供了linux运行时,但在将运行时签入源代码管理时它是在Windows上构建的,所以它失去了任何执行权限。因此,当我的应用程序抱怨权限时,它实际上是在抱怨jspawnhelper上的权限

我还发现,如果您确实设置了权限,那么在构建包时将尊重这些权限。我没有意识到这一点,因为之前我在Windows上构建linux安装程序,必须向Izpack安装程序添加额外的命令以使其可执行

总之,解决方案是在jspawnhelper和fpcalc上设置执行权限并提交到源代码管理,然后
Jpackage
就可以工作了。

我找到了解决方案(我以前碰到过)

因为Java 9在linux上使用Java调用外部应用程序时使用
lib/jspawnhelper
来决定如何运行应用程序。因为我提供了linux运行时,但在将运行时签入源代码管理时它是在Windows上构建的,所以它失去了任何执行权限。因此,当我的应用程序抱怨权限时,它实际上是在抱怨jspawnhelper上的权限

我还发现,如果您确实设置了权限,那么在构建包时将尊重这些权限。我没有意识到这一点,因为之前我在Windows上构建linux安装程序,必须向Izpack安装程序添加额外的命令以使其可执行


总之,解决方案是在jspawnhelper和fpcalc上设置执行权限并提交给源代码管理,然后
Jpackage
就可以工作了。

请添加调用C程序的代码。请添加调用C程序的代码。
ubuntu@ubuntu:~/code/jthink/jaikoz/JaikozAppImage/jaikoz/lib/app$ ls -l fpcalc*
-rwxrwxrwx 1 ubuntu ubuntu 2210876 Jul  4 11:15 fpcalc
-rwxrwxrwx 1 ubuntu ubuntu 2249272 Jul  4 11:15 fpcalc64
ubuntu@ubuntu:~/code/jthink/jaikoz/JaikozAppImage/jaikoz/lib/app$ ./fpcalc64 /home/ubuntu/Downloads/Red*
FILE=/home/ubuntu/Downloads/RedSharp_-_Walk_in_the_row.mp3
DURATION=273
FINGERPRINT=AQADtIsURmsSDc9i44-Iqsemr8a1MIOXKBHCi9CJ0M7R-MH5oNNy_Dp26ag55EmUJ5DjI-zREE-P9wz-odeKCyGbHXriIj8qbiYaPRue4_zx7MHHE1eiw1yE80d1IdmDnDy-LCeub_gVVLkGP8uHmTNhVjkicUeyh0MTHs_RE8-Jurg7XItwHVl-aFmHPGMq_Al-NCGFx0d6adD6I39RnQoaTXmK48JhTqOM58R19LED8yBf9LvQo1GW4viRk4Qm6cUvpHlRi8dn9MngFqRy-EdGlNPxHbp8oR8aLnvBLkb_4I8KS9Kh57jEKsOv4nD04UeZmZDyC64efLB1jK8Oj8hP-BSuF7aQ92h-4h1eKJJ1wYErregFzTWaH_m14Q--o9nsEe47Ij_EG33GI8e14xQf1Eifo5Z03IeeK2C0ODGaD6xl5Kh9OD68HdfwhuiPH33x9kg7HdpRuQgjnbiOe8Sn0EJt-AsR6sVxPQr65vg0aM8KjeTB5Hi4RviLJqYI7QoqsTApR4PPJwi_9LiHJmWCfmiyODWYX0OTLzfCB1c-4UQf6Dj0p3gH7xH8o8-Ja4rxoz--CHpy-EWPH_2h5dODUoaWmDmeo4ko5UKbzQquNJmGypnRfIEmkUEeRcZzVNwSBv3RsBo4dUZu6HKHrgkk-aiVPUR-vNJQ-WgYx-ija7hGZCc0_ngQ6gt8432Cpk6Fp0dzIjx03AjThOGO5lfwLMWF9MIX5Qp0NFn04w5vNFUufNGhpWJcPIrR4CS-5RHK_9BSDXcIPyZ-HOdBv3hQbjKafxA8adXw49OFPEWjFrWy42FD9Irh6sgrodEuPG0CmclSXNA6wmMGbb3QTTwa8cGDPoPHHddycXijBdKNvGD-4CyRb8F3wV-c4LXBKxHywNlB9kf3C7YeNHQCcsaJ_IOWPZEQHz-e6DhFnFFwIvyhE2ePfDnyY8pz6IJ1uMoO7WGIp8fXM9gqpsITdNnRkDu0RYdjPcHHoMl_qL4F9gjDMSUOKj8YTlF8NDtRoeqGpjv4MwiTN4WG-OFhTUuMVUly9FHRcD3wHTl0ZUO46miyfcFz1Dr8HLYZtMtxS0P4Q26OfBpcFd-xySx64gadHWF2QeYxHb8SCuWSHV6iS3gG44fHoM0wLzqa8NvxV3ihmUeuXLiUXeiF5iCPlzijWEIiqk-QH490PDnqo3mOv-Dk44qMTyEajauCqyfCvNAzNOPRL7hyQs3AH8e-ZBx6K_CPib3AaMrRKMePoel79Ieu4seXD0-uQI_RrDOGcsFz_CG-Q6OPs4fxHY90KNdKuOqPThX2x2jqoFV2BXK0R9Cpw8-KnIyPH48O7ngySujbJPAyFln4Qz-meCtKXSPy4zq6oqlyfDu-6MFNo3kQXtARcXvw4Dn6rQkY5ccVBv5wSTVyXKIOPVEOLUm_oC_2aGhqtAuaS0XZQ-ml4dC_4x_6TEO-qPBuHFRSHWEfmTjyb2ge9PEwnDhznEeYZw4OHdEzo8-L97gSXPLxojn7IKShbw_KHmEaBedBeifK4_sRppK64HkLXXnwHc0JbT8eqUT84OTxobKI9chv6PAe1CqDXEEppceRE1Oh6wquD_mM__B5ZGfx5YSu1OjRaH_QC9cOmWkBVzNYhkG1FxXFB155pE7wE39wTkmPSqeGI48P7UWqLqh19EfzlAS_408RXvDRHjpx4X6CHrkTGF15PEd2PUOrPPBxirg147tQlcepoz-a57gYEXqO3oOZN1AdPNMRWsePatsxRUd05oLuEz--En-HNq4Cxy0xrUflHmKVY3eh5Tl-_EPtUAg3H3m1GB3roWEkgQ9raOFHhA_hE99w6qjFw9pmdC06Ssh9MN3xB-mk4sLZTkV5mJPg6UevNjhlXLrQIFTUqZDyIf3xo77wpWiFO0HzCz_y458CPcOPhmCeDJcfPDjaw1aOE99YOCf0Hb-KJ6oAXTLxIz6u5YJvF33RH3ZytMgP6D_aa_iF_RE2hzCjKAFO9mj2GMc7Bs-O_6FwC02g9Qf35Xge4kPeG0ye43mCWjROvEa8Cc2Xoudx5Ceeo-Ee_PgjtfAT_Pjg_sgH-Q_C_MS9FGel4fjAMqimg8n649uDnEH1QfnhaUerHFeP_hGa88iF_sfV4WQ1nMfWC0dKp9BDNF9oPMFx_dDuIb3wk_CFtyZRXA7-4NNBTpa0IMweyEc-pnCVHJ8eWDum48sPxMWe51C9GY2eDvuFh1kCOdmxK4zQR-gPP8YZWjDXeNCXzLDmHNUjHFS-4hp-4moQi3yOU0IfNLJyXNJl9Dya7PmGf0d2aMdD9UhDJTpOYdyyoLrw40yOPCJ0lkH1G34t6MyPNEsiXSi1WegrWDn6rXh49N8RrSIS6zt85uiNP_hBEz4xysJnhCp1XDo-VVJg5slw4D0q4Uoe_KiuFL6CHipd5AmLRw-aL3GKacGRJzqSO3FwJi9-4c6Ekzm2G5eOW7GQK8pHNLF0dMWVQ2wm44FGIgxfvBSeJ8N9TAmp4LngXngraUGkLJAb9EOjkfg-4nF8bHqg8wKeHFf2oPqD5j_UDz_eLMV1fLlRwyPRZyyU7_jwREaYaWjH42WTEI2-ok6KXFGIH-KY-PiO64fOo3uQxtHhSaSIp0_gE0e6EhV1QldyGfl8-ErxCx-e6LiyNLiCKecBghQiADHAADJMAGeMMFoQAYA0kgCECSNEEKIQIIAII5QwBhACHABGAKWEEo4oQgVjggIBERGAOYGQIqgxJIBEAihHkQIMIWGAAggJBIAgAhEhkCJCQMEUMQQqIpQCQhgFhNUAAAIAck4IQQABLhEBgEHCGCMUUERgDARhQCipmEBACFgQAIIITZAAABACiABACGFIYEsAIoFQABoIFEgICAECAgI4AQggyghIgQNeCAMEIYAwgARCTgiSADCMUkGEIUAQwhgBQgABhJCKWEIFssAAaZQxQjFiiGKCCAGAUIAYo4RCkCEggCJSCEiBIcAwQokQBgECCJIECCUEM1ABBAgRkAICDCLCEEOEQwIRQRhCwFkAEGQGCY8UQ0AQAS4SAAhBFDEEWAEYIYwJoygAghmKAEAKEQIAEvIoQoAkCgJhiEKKECYgI8YhIglgyBgCACJAIASEMEgoooQRSCLCACGEGAMQIIQxJKBAwBgIkFBIAEMAIQQapZwzQgmBiCKIEeG5AUgYAwwDQhAEFHBAMAWIAA4QZCARyEKAIDHEEqIMAAQAYYAUFgBLjAACGYaAEIoAxggCgghiBEBgGGAAQ4AhAgAiBjkBAUHGEIeAABRQI4gAgBmhBCLGMQSAA8QJgBQABhlnFKAAAEqYAAYI5ABSTiilBBIGCMGoMGIAYRBghiEjgGACEUOREIICgQgASBklCHBAAIEUAgQBZgQSApCDlEKQAAIUcgYwA4AhgCpkgEAKGgQVUIYAxYASwDCiHALAEQcUAMICIQhRABJAiGYIACMIQUQgRYAzBCjABAHOACAUA0YQAABwRCIBwEFcCAIAAkAQgQgxDAgigDAKSEaQYEwQRBgSBjEhDDJIEOUEQUgBQqhBxAiACAMECEoYYYQRYYAQABkEEBBECEYEQoYQBBkSBBggiUFAAiIIIUKyIggABACAAAIDAA