dos命令行直接编译错误场景如下:
.java文件所处位置:E:\workspace\Trunk\Development\Source\Server\src\main\java\com\muyi\QTranslator.java,
在使用javah com.muyi.QTranslator提示找不到com.muyi.QTranslator类文件,在尝试了先使用javac编译产生class文件之后仍然提示找不到.
解决方案
在网上看了几个分析的都是Android下的解决方案,讲的大部分都是需要先切换到bin目录,然后使用
javah生成头文件,但是自己是用Eclipse开发的,根本找不到bin目录,尝试了几次也都失败。
最终找到了解决方案之后发现也是很简单,只需要切换到.java文件所处包的上级目录,例如我自己的QTranslator.java处于package com.muyi;包下,则只需要切换到E:\workspace\Trunk\Development\Source\Server\src\main\java\这个目录下就是包com.muyi的上层目录即src\main\java\目录,直接执行javah com.muyi.QTranslator即可。执行成功之后会在com包同级目录下出现一个com_muyi_QTranslator.h的文件。
Java程序中调用出错场景
在Java程序中调用,控制台提示Can’t find dependent libraries,就是提示找不到所依赖的库文件。程序中JNI调用出代码如下:
public void initLibrary(String libPathName) throws Exception {System.load(libPathName);}
解决方案
这个问题主要是java.library.path这个路径引起的,需要确保你所需的dll文件的路径在java.library.path中,在代码中可以增加System.getProperty(“java.library.path”)进行查看具体的路径信息,其实java.library.path对应到计算机的PATH环境变量,只需要在高级系统设置–更改PATH环境变量即可,注意更改之后需要重启Eclipse,当时我就说因为没有重启导致PATH变量没有重新载入即刚更新的路径没有生效,花费了不少时间来尝试,在重启之后java.library.path包含所需的dll所处的路径,程序也正常加载