正常情况下, xxx.class.getResourceAsStream(lib) 这样就可以获取到了。但是我的是在JFrame的初始化中的, 所以需要Thread.currentThread().getContextClassLoader().getResourceAsStream(lib); 这样来获取。 这个坑 找了蛮久才找到解决方案记录下。
嗯 看了一些解决方案,1、把库跟jar包一起拷贝打包 2、放入指定路径 添加环境变量 通过环境变量来获取库路径等等 终究还是比较麻烦的。
经过测试发现 本文的方案 还是没有最终解决这个问题 手里还有别的事 先放下了后面再研究
private synchronized static void copyLib(String libFullName, String arch_libfile_suffix) throwsIOException {
InputStream in= null;
BufferedInputStream reader= null;
FileOutputStream writer= null;
File f= new File(".");
String libs[]= { libFullName, libFullName.replace(arch_libfile_suffix, ".c"), libFullName.replace(arch_libfile_suffix, ".h") };for(int i = 0;i
File extractedLibFile= new File(f + File.separator +libs[i]);if(!extractedLibFile.exists()){//打包进jar中后, 可以用zip软件打开jar文件 看看你需要调用的dll或者so 在jar中的