idea在运行时正常,但打包成一个jar运行文件时出现Could not load JNR C Library问题

在通过java连接cassandra时,其中com.datastax.driver.core是通过maven加入的,通过Idea运行时是正常的,在导出jar时如果不是将所有的jar打包成一个jar时也是正常的,但是如果将所有的第三方打包成jar,则会出现如下错误:

17:38:14.973 [main] DEBUG com.datastax.driver.core.Native - Could not load JNR C Library, native system calls through this library will not be available
java.lang.UnsatisfiedLinkError: unknown
    at jnr.ffi.provider.jffi.NativeLibrary.loadNativeLibraries(NativeLibrary.java:87)
    at jnr.ffi.provider.jffi.NativeLibrary.getNativeLibraries(NativeLibrary.java:70)
    at jnr.ffi.provider.jffi.NativeLibrary.getSymbolAddress(NativeLibrary.java:49)
    at jnr.ffi.provider.jffi.NativeLibrary.findSymbolAddress(NativeLibrary.java:59)
    at jnr.ffi.provider.jffi.AsmLibraryLoader.generateInterfaceImpl(AsmLibraryLoader.java:158)
    at jnr.ffi.provider.jffi.AsmLibraryLoader.loadLibrary(AsmLibraryLoader.java:89)
    at jnr.ffi.provider.jffi.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:44)
    at jnr.ffi.LibraryLoader.load(LibraryLoader.java:325)
    at jnr.ffi.LibraryLoader.load(LibraryLoader.java:304)
    at com.datastax.driver.core.Native$LibCLoader.<clinit>(Native.java:104)
    at com.datastax.driver.core.Native.isGettimeofdayAvailable(Native.java:189)
    at com.datastax.driver.core.ClockFactory.newInstance(Clock.java:56)
    at com.datastax.driver.core.AbstractMonotonicTimestampGenerator.<init>(AbstractMonotonicTimestampGenerator.java:42)
    at com.datastax.driver.core.LoggingMonotonicTimestampGenerator.<init>(LoggingMonotonicTimestampGenerator.java:53)
    at com.datastax.driver.core.AtomicMonotonicTimestampGenerator.<init>(AtomicMonotonicTimestampGenerator.java:55)
    at com.datastax.driver.core.AtomicMonotonicTimestampGenerator.<init>(AtomicMonotonicTimestampGenerator.java:37)
    at com.datastax.driver.core.policies.Policies.defaultTimestampGenerator(Policies.java:123)
    at com.datastax.driver.core.policies.Policies$Builder.build(Policies.java:287)
    at com.datastax.driver.core.Cluster$Builder.getConfiguration(Cluster.java:1354)
    at com.datastax.driver.core.Cluster.<init>(Cluster.java:163)
    at com.datastax.driver.core.Cluster.buildFrom(Cluster.java:227)
    at com.datastax.driver.core.Cluster$Builder.build(Cluster.java:1371)
    at com.wincom.mstar.writedb.cas.CasDB.init(CasDB.java:37)
    at com.wincom.mstar.writedb.app.Application.run(Application.java:51)
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:813)
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:797)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:324)
    at com.wincom.mstar.writedb.app.Application.main(Application.java:40)

出现这种问题主要是使用了jnr-ffi包引起的,如果用java 32bit运行测需要使用jnr-x86asm,如果是java64 bit运行测需要使用jnr-ffi

<dependency>
            <groupId>com.github.jnr</groupId>
            <artifactId>jnr-ffi</artifactId>
            <version>2.1.9</version>
        </dependency>

将jnr-ffi更换成jnr-x86asm包即可:

<dependency>
            <groupId>com.github.jnr</groupId>
            <artifactId>jnr-x86asm</artifactId>
            <version>1.0.2</version>
        </dependency>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值