如何在一个标头下使用 JNAerator 和多个动态库?

2024-02-13

我正在使用 JNAerator 生成一个可以包含在项目中的单个 jar 文件,并且我希望支持每个操作系统的动态库并将所有内容都归档到这个单个 jar 中。

到目前为止,在摆弄 JNAerator 时,我已经能够使用如下命令包含单个动态库:

java -jar jnaerator.jar test.dll test.h [...] -mode StandaloneJar

然而,这仅包test.dll,虽然我有多个系统的动态库(test_win32.dll, test_win64.dll, libtest_mac.dylib, libtest_linux_x86.so, and libtest_linux_amd64.so)我希望所有这些都打包到一个罐子中并由一个罐子支持。

有没有办法通过运行一次 JNAerator 来实现这种“一体化”方法,或者我必须为每个平台生成不同的 jar 文件?


JNAerator 有一个-arch专为此设计的选项,尽管该文档目前对此非常模糊 https://code.google.com/p/jnaerator/wiki/CommandLineOptionsAndEnvironmentVariables:

java -jar jnaerator-0.12-shaded.jar \
  -arch win32 win32/test.dll \
  -arch win64 win64/test.dll \
  -arch darwin_universal mac/libtest.dylib \
  -arch linux_x86 linux_x86/libtest.so \
  -arch linux_x64 linux_amd64/libtest.so \
  test.h \
  -mode StandaloneJar \
  -jar test.jar

这将以预期的格式捆绑库BridJ https://code.google.com/p/bridj/ (see 关于嵌入式二进制文件的 wiki 页面 https://code.google.com/p/bridj/wiki/LibrariesLookup):

unzip -l test.jar gives:

    ...
    0  04-09-15 22:45   lib/win32/test.dll
    0  04-09-15 22:45   lib/win64/test.dll
    0  04-09-15 22:45   lib/darwin_universal/libtest.dylib
    0  04-09-15 22:45   lib/linux_x86/libtest.so
    0  04-09-15 22:45   lib/linux_x64/libtest.so

目前预计库名称准确无误lib<name>.(so|dylib) or <name>.dll对于每个平台,尽管这很容易修复如果你问 https://github.com/nativelibs4java/JNAerator/issues.

(注:我是 BridJ & JNAerator 的作者)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在一个标头下使用 JNAerator 和多个动态库? 的相关文章

  • Java中如何动态添加charsequence[]中的数据?

    初始化的一种方法charsequence is charsequence item abc def 但我不想以这种方式初始化它 有人可以建议其他方式吗 比如我们初始化的方式string arrays 首先 修复变量声明 charsequen
  • 运行单个 Java 线程的双核 CPU 利用率[重复]

    这个问题在这里已经有答案了 可能的重复 多线程 Java 应用程序能否很好地利用多核机器 https stackoverflow com questions 1649402 would a multithreaded java applic
  • 通过 JDBC 连接到 DB2 时的用户和密码

    我正在尝试连接到本地 DB2 10 5 Express C 服务器 这是一个测试环境 所以我不关心安全性 我能够连接到命令行处理器 在 Windows 上运行 并且我更改了配置设置AUTHENTICATION CLIENT and TRUS
  • 使用 Hibernate 和 Apache DBCP 的 MySQL 连接池问题

    看来我的应用程序有问题 当应用程序在启动后闲置很长时间 我不确定确切的时间 时 我会在日志中收到以下错误消息 我使用 Spring Hibernate MySQL 和 ApacheDBCP 进行连接池 ERROR org hibernate
  • 如何让 HttpClient 返回状态码和响应正文?

    我试图让 Apache HttpClient 触发 HTTP 请求 然后显示 HTTP 响应代码 200 404 500 等 以及 HTTP 响应正文 文本字符串 重要的是要注意我正在使用v4 2 2因为大多数 HttpClient 示例都
  • 到底什么是哈希冲突

    HashMap 中的哈希冲突或哈希冲突并不是一个新主题 我遇到过几个博客和讨论板 以模糊且详细的方式解释如何产生哈希冲突或如何避免它 我最近在一次采访中遇到了这个问题 我有很多事情要解释 但我认为很难准确地给出正确的解释 抱歉 如果我的问题
  • IntSummaryStatistics的summaryStatistics方法

    为什么空 IntStream 上的 summaryStatistics 方法返回整数的最大和最小值作为流中存在的最大和最小 int 值 IntStream intStream IntStream of IntSummaryStatistic
  • 在 SWT 中单击鼠标触发事件?

    在SWT中 对于MouseListener接口 可用的方法有mouseUp mouseDown and mouseDoubleClick 如何根据用户点击触发事件 我们可以通过结合来做到这一点mouseUp and mouseDown 但没
  • 解密 TLS 1.2 AES-GCM 数据包

    我正在开发一个 Java 程序来解密TLS 1 2正在使用的会话TLS RSA WITH AES 128 GCM SHA256密码 我使用wireshark 录制了一个测试会话 这大师秘密是已知的 No Time Protocol Leng
  • 如何知道 glassfish 是什么 - 完整平台或网络配置文件?

    我已经安装了glassfish 我可以跑 asadmin version 它显示了它是什么版本 但如何知道它是 完整平台 还是 Web 配置文件 你可以使用 glassfish4 bin gt asadmin list containers
  • Android 反向地理编码不适用于华为设备

    我正在尝试通过这段代码反转地理编码纬度 经度 Geocoder geocoder new Geocoder context Locale ENGLISH try List
  • 属性文件中的字符串主机名:Java

    这听起来可能是一个非常简单的问题 但我无法找到解决方法 我有一个 config properties 文件 其中包含两个键值 IP 地址和端口号 我读取此配置文件以提取字符串格式的键值 但是 当我尝试使用这些值时 我无法连接到从配置文件中检
  • 如何在Java中通过反射调用代理(Spring AOP)上的方法?

    一个接口 public interface Manager Object read Long id 实现该接口的类 Transactional Public class ManagerImpl implements Manager Over
  • Visual Studio Code - Java 类路径不完整。只会报告语法错误

    在使用 python 获得了丰富的经验之后 我正在使用 java 迈出第一步 我正在运行的脚本是一个简单的 Java Swing Gui 它可以从命令行和 VS Code 中正常编译和运行 为了设置 java 调试环境 我使用 github
  • 通过 ssh 发送命令并读取输出结果

    我有代码通过 ssh 连接到远程服务器并向其发送 2 个或更多命令 例如 cd export home ops bin和 viewlinkload time 20131205 19 但我没有看到命令执行 也没有收到结果 我需要获取服务器返回
  • 在 Streamreduce 方法中,求和时恒等式必须始终为 0,乘​​法时恒等式必须始终为 1?

    我继续java 8学习 我发现了一个有趣的行为 让我们看一下代码示例 identity value and accumulator and combiner Integer summaryAge Person getPersons stre
  • 如何从Java中的连接获取查询字符串?

    我正在编写一个方法 尝试记录数据库调用 形成连接到它的连接 在查询之后 有很多地方调用方法 connect 来启动并调用 cleanUp 方法来结束 我不能并且不想修改每个地方 所以顺序是这样的 Connection con connect
  • Spring Boot中服务接口类的用途

    我的问题是关于接口类的使用 我对 Spring 还很陌生 所以如果这过于简单 请耐心等待 首先 当您可以在 BoxService 中声明 find all 时 这里拥有 IBoxService 接口有什么意义 其次 在控制器中如何使用IBo
  • 从数字列表中生成所有唯一对,n 选择 2

    我有一个元素列表 假设是整数 我需要进行所有可能的两对比较 我的方法是 O n 2 我想知道是否有更快的方法 这是我在java中的实现 public class Pair public int x y public Pair int x i
  • 删除Java中重载的方法

    有2个重载方法 这些方法中的每一个都将一种类型的列表转换为不同类型的列表 但第一种方法使用比较器 class SomeClass public static

随机推荐

  • TCPDF 将底部边距设置为零

    我正在 php 中使用 TCPDF 创建 pdf 我需要将我的数据包含到没有下边距的 pdf 中 数据将包含在页面末尾 pdf gt SetLeftMargin 14 pdf gt SetTopMargin 6 pdf gt SetFont
  • super() 和显式 super(Cl,self) (带有 __slots__ 和 attrs)有什么区别

    我正在使用attrspython 包 结合继承和槽 我想从派生方法中调用父类的方法 该问题演示如下 import attr attr s slots True class Base def meth self print hello att
  • javascript:获取函数中传递的实际参数的名称

    我们能知道函数中传递的实际参数的名称吗 喜欢 func a b c d 当我们调用它时 我希望在输出中打印 a b c d 就像我将 func 定义为 function func e f g h do something here so t
  • DataAnnotation 正则表达式对于文件输入始终返回 false

    我已经尝试了很多正则表达式RegularExpression数据注释来检查文件扩展名是否是图像 并且它总是返回 false 例如我也尝试过FileExtension属性 但它会在 jquery validation 上产生错误 我正在使用
  • 读取输入后无法写入输出

    我正在编写一个连接到 servlet 的程序 这要归功于HttpURLConnection但我在检查网址时卡住了 public void connect String method throws Exception server HttpU
  • Android 关闭自定义对话框

    我正在尝试让自定义对话框在按下按钮时关闭 set up dialog Dialog dialog new Dialog BrowseActivity this dialog setContentView R layout about dia
  • 使 Eclipse 出现错误时不运行项目

    是否可以使 Eclipse Helios SR2 在出现错误时不运行您的项目 而不是提示答案或无论如何运行 设想 在 Eclipse 中 我点击了 运行 按钮 有编译错误 Eclipse 询问我是否仍要继续运行 我有 是 和 否 两个选项
  • 标签“bg”不存在

    这是我的标签代码 from Tkinter import Tk BOTH Canvas Text END import Tkinter as tk from ttk import Frame Button Style Label Entry
  • SUMIF 单元格不是公式

    我正在尝试创建一个 Excel 电子表格 其中包含公司每位员工的一行 其中每列引用他们每周的工作时间 最初 单元格中填充的是另一张工作表中的预期每周工作小时数 但随后会手动替换为人们每周实际工作的小时数 我希望能够对人们实际工作的小时数进行
  • Web 共享 API 级别 2 PDF 支持

    我正在为我的 PWA 应用程序使用网络共享级别 2 除了 PDF 之外 所有媒体格式都可以正常工作 Web api 返回 PDF 的 base64 字符串 在客户端 我正在从中创建 blob 对象 但是当我分享它时 抛出异常 权限被拒绝 v
  • 没有 .NET 的 Windows 身份验证标头。可能的?

    我想知道是否有人知道一种无需托管在 ASP 站点上即可使用 Windows 身份验证的方法 这是一个可以访问 LDAP 的 Intranet 所以我想知道是否有办法强制客户端向我提供数据 就好像数据来自 ASP 站点一样 我只需要登录域和用
  • 重新排序 Django 模型中的字段

    我想向 django 应用程序中的每个模型添加一些字段 这次是created at updated at and notes 为 20 多个模型中的每一个模型重复代码似乎很愚蠢 因此 我决定使用抽象基类来添加这些字段 问题是从抽象基类继承的
  • gcc std::unordered_map 实现速度慢吗?如果是这样 - 为什么?

    我们正在用 C 开发高性能关键软件 我们需要一个并发哈希映射并实现它 因此 我们编写了一个基准测试来弄清楚 我们的并发哈希映射与std unordered map But std unordered map似乎非常慢 所以这是我们的微基准测
  • 如何在发生错误时中止 Firestore 事务

    我正在使用 FirestorerunTransactionhttps 云函数中的方法 运行 Express 我想要的是确保如果任何读取或写入失败 其他事务读取或写入将不会运行或在需要时回滚 交易 admin firestore runTra
  • Thymeleaf 获取当前语言环境

    如何获取 thymeleaf 模板中的当前区域设置 Thymeleaf 上下文是区域设置感知的 因此在每个请求上注入区域设置会很奇怪 我可以在模板中请求一些变量吗 div div 使用 locale表达式 div div
  • 未找到架构 arm64 的符号

    面临 ObjC 文件引用问题 我尝试了 pod 分解 删除 DerivedData 清理项目 添加 Objc 和 inherited FLAGS I am using cocoapods Xcode 9 Swift 4 Please rev
  • 无效的表达术语

    int hour 10 if hour gt 0 lt 12 Console WriteLine It s morning else if hour gt 12 lt 18 Console WriteLine It s afternoon
  • 当在 T-SQL 存储过程中声明变量时,它是保存在内存中还是 tempdb 中?

    我们正在尝试优化一些 T SQL 存储过程以减少 tempdb 争用 但我无法弄清楚 SQL Server 如何存储非表变量 那么像 INT 和 DATETIME 这样的简单数据类型呢 感觉他们就活在记忆里了 VARCHAR VARCHAR
  • 有没有办法将 json 对象转换为 json l 文件

    我有一系列对象 我需要将其转换为 jsonl 格式 并使用 lambda 函数中的节点将其作为响应发送 我一直在尝试将其更改为字符串并添加 n 以使其成为新行 但它不起作用 生成 jsonlines 的简单代码 jsonlines 实际上只
  • 如何在一个标头下使用 JNAerator 和多个动态库?

    我正在使用 JNAerator 生成一个可以包含在项目中的单个 jar 文件 并且我希望支持每个操作系统的动态库并将所有内容都归档到这个单个 jar 中 到目前为止 在摆弄 JNAerator 时 我已经能够使用如下命令包含单个动态库 ja