首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Java中加载共享库时出现问题

在Java中加载共享库时出现问题
EN

Stack Overflow用户
提问于 2016-10-26 15:38:10
回答 1查看 155关注 0票数 0

我希望使用JNI实现一个基于C++库的java。不幸的是,当我想在java中使用共享库时,却找不到它。这个共享库的问题是它链接了另一个共享库。我有两个不同的案例,一个可以工作(但不应该使用),另一个不能。

Ana库必须始终是静态的。Clara库必须始终是共享的。当Bob库是静态的时,它可以工作,但它应该是共享的,并且应该包括Ana和Clara。

情况1(可以工作,并且可以加载到正确的java.library.path中)。

sharedlibJava.so链接: staticlibAna.a统计ClibBob.a sharedlibClara.so

情况2(无法工作,因为即使java.library.path是正确的,它也无法加载)。sharedlibBob.so链接: staticlibAna.a和sharedlibClara.so (基本的c++实现已经过测试,工作正常)

sharedlibJava.so链接: sharedlibBob.so ( java实现应该可以使用这个新的共享库)。

问题是,当我试图加载库时,它甚至在正确的java.library.path中都找不到它,即使它位于那里。

我真的很感谢任何关于这个问题的反馈。

EN

回答 1

Stack Overflow用户

发布于 2016-10-28 08:26:26

将你所有的路径位置放在LD_LIBRARY_PATH上。或者,将它们放入-Djava.library.path

如果你正确地编译了代码,我认为你在访问共享库时应该不会遇到问题。

如果您将一段代码编译为共享库,然后通过将其他代码链接到共享库来引用它,那么它应该可以很好地工作

代码语言:javascript
运行
AI代码解释
复制
cc -g -shared -fpic c/recipeNo023_AnotherFunction.c -o lib/libAnotherFunction.$(EXT)
cc -g -shared -fpic -I${JAVA_HOME}/include -I${JAVA_HOME}/include/$(ARCH) c/recipeNo023_HelloWorld.c -L./lib -lAnotherFunction -o lib/libHelloWorld.$(EXT)

然后,您应该能够通过在-Djava.library.path内部传递lib location来调用代码

代码语言:javascript
运行
AI代码解释
复制
java -Djava.library.path=:./lib -cp target recipeNo023.HelloWorld
library: :./lib
Hello world!
Hello from another function!

有关完整的示例代码,请查看此处:

https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo023

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40266528

复制
相关文章
Powershell编码与混淆
在powershell中最常使用的编码就是base64编码了,今天主要说一下Invoke-Obfuscation 这个powershell混淆编码框架,这也是著名的组织APT32 (海莲花)经常使用的
FB客服
2018/02/26
1.6K0
Powershell编码与混淆
python基础-字符串与编码
转载于:廖雪峰的官方网站-python教程 字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。 由于计算机
昱良
2018/04/08
9610
python基础-字符串与编码
python中的编码与解码
编码/解码本质上是一种映射(对应关系),比如‘a’用ascii编码则是65,计算机中存储的就是00110101,但是显示的时候不能显示00110101,还是要显示'a',但计算机怎么知道00110101是'a'呢,这就需要解码,当选择用ascii解码时,当计算机读到00110101时就到对应的ascii表里一查发现是'a',就显示为'a'
李拜六不开鑫
2018/09/04
1.3K0
python中的编码与解码
python字符串与url编码的转换
主要应用的场景 爬虫生成带搜索词语的网址 1.字符串转为url编码 import urllib poet_name = "李白" url_code_name = urllib.quote(poet_name) print url_code_name #输出 #%E6%9D%8E%E7%99%BD 2.url编码转为字符串 import urllib url_code_name = "%E6%9D%8E%E7%99%BD" name = urllib.unquote(url_code_name) prin
py3study
2020/01/07
3.3K1
《5》python字符串和编码
「5」python字符串和编码 字符编码 最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。 中国制定了GB2312编码,用来把中文编进去。 Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。 但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。 本着节约的精神,又出现了把Unicode编码转化为“
企鹅号小编
2018/02/01
7700
《5》python字符串和编码
【Python】3“字符串和编码“
小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出’xx.x%’,只保留小数点后1位: # !/usr/bin/env python3 # -*- coding: utf-8 -*- s1 = 72 s2 = 85 r = (85 - 72) / 72 * 100 print('%0.1f%%' % r)
肓己
2021/08/12
4090
js --- 中字符串与unicode编码
2、charCodeAt ():在第一个的基础上,返回的是字符的unicode编码
小蔚
2019/09/11
4.9K0
Python 基础系列--字符串与编码
字符串在编程中是使用频率最高的数据类型,像 web 网站中显示的中英文信息,使用记事本打开一个文本文件所看到的内容,软件呈现给用户的信息,包括你现在看到的文字,都属于字符串,可以说字符串无处不在。如果对字符串的编码不理解,编辑过程中非常容易出现乱码问题,相反如果懂编码,那么即使出现乱码,也可以自助解决。不同的编程语言对字符串的处理可能略有差异,但对字符串的编码原理却是相通的, 因此字符串和编码是每个准程序员必备知识,需要引起重视。
somenzz
2020/12/10
9020
Python 基础系列--字符串与编码
字符串与编码
在最新的Python 3版本中,字符串是以Unicode编码的,即Python的字符串支持多语言
py3study
2020/01/16
1K0
Python 源码混淆与加密
Python 是一种解释型语言,没有编译过程,发布程序的同时就相当于公开了源码,这也是其作为开源语言的一个特性。但在某些场景下,我们的源码是不想被别人看到的,例如开发商业软件、编写 0day 漏洞 POC/EXP、免杀 shellcode 等。
全栈程序员站长
2022/10/02
6K0
Python 源码混淆与加密
字符串和编码
我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。
用户9076598
2022/03/02
5020
python2与python3的字符串编码对比
python3相比于python2最大改变在于,python 3对文本和二进制数据作了更为清晰的区分,两者不可做任何隐式转化。
week
2018/08/24
5780
python2与python3的字符串编码对比
python字符串编码
  python 2.x默认的字符编码是ASCII,默认的文件编码也是ASCII。
py3study
2020/01/20
2.1K0
Python字符串的编码格式
文章链接: https://icodeq.com/2021/ad69b6cca766/
Zkeq
2022/05/18
1.1K0
python中json和字符编码的转换
json是用来转换python object 和json format 的,字符编码有gb2312,gb18030/gbk,utf-8等。
py3study
2020/01/10
4K0
字符串和编码
字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。 由于计算机是美国人发明的,因此,最早只有127个字母被
wangxl
2018/03/08
9420
字符串和编码
字符串和编码
ASCII(American Standard Code for Information Interchange),是一种单字节的编码。计算机世界一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英语字符和许多的控制符号。不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础。
紫禁玄科
2022/03/24
7260
字符串和编码
Python中的编码
Python处理字符串,写文件时会碰到许多的编码问题,特别是涉及到中文的时候,非常烦人,但又不得不学。下面主要记录工作过程中碰到的Python编码问题。 1. 字符串编码 Python的字符串类型为s
Tyan
2017/12/29
1K0
Python基础教程之字符串和编码
1. 字符编码 由于计算机只能处理数字,如果要处理文本就必须将文本转换为数字才能处理,最早设计的时候采用8b 表示一个字节,一个字节能够表示的最大整数是255,如果要表示更大的整数,就必须用多个字节。另外由于计算机是美国人发明的,所以计算机早期只有127个字符被编码到计算机了,也就是Ascii码,后来要处理中文中国就指定了GB2312 ,但是其他国家也有自己的语言 然后就有了不同的标准, 所以就有组织将所有的统一成 Unicode编码。 2. python字符串 在python 中字符串支持多语言,py
执行上下文
2022/07/26
2450
Python学习总结4--字符串和编码
一、编码历史     由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。     但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。     Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了     本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码
曼路
2018/10/18
4140
Python学习总结4--字符串和编码

相似问题

ANSI、ASCII、Unicode和编码与Python混淆

32

Python中字节字符串和base64编码的混淆

15

PHP编码与混淆

15

与html编码混淆

16

Rails与编码的混淆

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文