You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java工具NGS定量分析时UnsatisfiedLinkError问题求助

NGS定量分析时UnsatisfiedLinkError问题排查与解决

在使用Java工具NGS进行定量分析过程中,程序抛出java.lang.UnsatisfiedLinkError错误,具体信息为:com.strandgenomics.cube.framework.ani.SharedProgressMonitorModel.createNativeSharedObject()J。已尝试在IntelliJ的VM选项中添加-Djava.library.path指定ani库路径,但问题仍未解决。

完整错误堆栈

Caused by: java.lang.UnsatisfiedLinkError: com.strandgenomics.cube.framework.ani.SharedProgressMonitorModel.createNativeSharedObject()J
    at com.strandgenomics.cube.framework.ani.SharedProgressMonitorModel.createNativeSharedObject(Native Method) ~[rep/:na]
    at com.strandgenomics.cube.framework.sharedobject.SharedObject.<init>(SharedObject.java:17) ~[rep/:na]
    at com.strandgenomics.cube.framework.ani.SharedProgressMonitorModel.<init>(SharedProgressMonitorModel.java:27) ~[rep/:na]
    at com.strandgenomics.cube.framework.ani.NativeAlgorithm.execute(NativeAlgorithm.java:22) ~[rep/:na]
    at com.strandgenomics.spring.stat.QuantileNormAlgorithm.execute(QuantileNormAlgorithm.java:39) ~[spring-stat-3.9.jar:na]
    at com.strandgenomics.spring.stat.NormalizationAlgorithm.execute(NormalizationAlgorithm.java:30) ~[spring-stat-3.9.jar:na]
    at com.strandgenomics.ngs.rnaseq.mrna.expression.QuantileNormalizeWithMV.normalize(QuantileNormalizeWithMV.java:53) ~[rep/:na]
    at com.strandgenomics.ngs.rnaseq.mrna.expression.QuantileNormalizeWithMV.getNormalizedDataset(QuantileNormalizeWithMV.java:35) ~[rep/:na]
    at com.strandgenomics.ngs.rnaseq.mrna.expression.NormalizeAndBaseline.<init>(NormalizeAndBaseline.java:69) ~[rep/:na]
    at com.strandgenomics.ngs.rnaseq.mrna.expression.GeneQuantificationOperations.createNormalizedDataset(GeneQuantificationOperations.java:203) ~[rep/:na]
    at com.strandgenomics.ngs.rnaseq.smallrna.quantification.SmallRNAQuantification.getNormalizedDatasets(SmallRNAQuantification.java:239) ~[rep/:na]
    at com.strandgenomics.ngs.rnaseq.smallrna.quantification.SmallRNAQuantification.getSmallRNAQuantificationNode(SmallRNAQuantification.java:213) ~[rep/:na]
    at com.strandgenomics.ngs.rnaseq.smallrna.quantification.SmallRNAQuantification.run(SmallRNAQuantification.java:158) ~[rep/:na]
    at com.strandgenomics.ngs.rnaseq.smallrna.quantification.SmallRNAQuantificationJob.doRun(SmallRNAQuantificationJob.java:117) ~[rep/:na]
    at com.strandgenomics.cube.pipeline.job.AbstractJob.run(AbstractJob.java:466) ~[cube-pipeline-2.1.jar:na]
    ... 6 common frames omitted
16-04-24 11:06:35.619 [pool-25-thread-1] [VitalStatsMonitor] INFO  VITAL_STATS PROCESS cpu-load=0.02, free-mem=15.08GB, #threads=29, #classes=12786
16-04-24 11:06:35.620 [pool-25-thread-1] [VitalStatsMonitor] INFO  VITAL_STATS SYSTEM cpu-load=8.29, #open-fd=575, free-swap=1.74GB, total-swap=2.00GB
16-04-24 11:06:35.620 [pool-25-thread-1] [VitalStatsMonitor] INFO  VITAL_STATS DISK free-space=252.60GB
16-04-24 11:06:35.620 [pool-25-thread-1] [ROOT] INFO  MST: } Finish: Job: Failed: Run Quantification
16-04-24 11:06:35.620 [pool-25-thread-1] [SmallRNAQuantificationJob] INFO  ---------------------------- Finished executing job ----------------------------
16-04-24 11:06:35.620 [pool-25-thread-1] [SmallRNAQuantificationJob] INFO  Job ID = =1713242315827=JAVA=1406318141
16-04-24 11:06:35.620 [pool-25-thread-1] [SmallRNAQuantificationJob] INFO  Job Name = Run Quantification
16-04-24 11:06:35.620 [pool-25-thread-1] [SmallRNAQuantificationJob] INFO  Job Type = Analysis

当前VM配置

-DorderID=FLOATING_LICENSE
-Djavavm=../../../pkg/tools/jdk/1.8.0/jre
-Djava.library.path=../../../pkg/tools/java/1.8/lib
-DproductVersion=2.0
-DproductName=NGS
-Dtmp.dir=app/tmp
-Ddata.dir=app/Data

解决方案

  • 确认库路径有效性:检查-Djava.library.path指向的目录是否存在对应的native库(如Linux下的libani.so、Windows下的ani.dll、macOS下的libani.jnilib)。注意相对路径是程序启动目录的相对路径,而非IntelliJ安装目录,建议替换为绝对路径测试。
  • 校验架构匹配:确保native库与JDK的架构一致(32位/64位),若JDK是64位,native库也必须为64位版本,否则会加载失败。
  • 检查库依赖:使用系统工具检测native库的依赖是否完整:
    • Linux:ldd libani.so
    • Windows:Dependency Walker工具
    • macOS:otool -L libani.jnilib
      确保所有依赖的系统库都能被系统找到。
  • 确认VM参数生效时机:-Djava.library.path必须在JVM启动时设置,在IntelliJ中需将参数添加到运行配置的VM参数栏,而非其他配置项。
  • 手动加载库调试:在代码中NativeAlgorithm初始化前,显式调用System.loadLibrary("ani")或System.load("/绝对路径/libani.so"),捕获UnsatisfiedLinkError以获取更详细的加载失败原因。
  • 核对官方文档:查看NGS工具对应版本的官方文档,确认JDK版本要求、native库配置步骤是否有遗漏。

内容的提问来源于stack exchange,提问作者anurag jaiswal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 16:54:57