Mac*_*cki 11 java java-native-interface netbeans jar manifest.mf
可能重复:
如何在JAR中捆绑本机库和JNI库?
我需要在我的jar中包含本机lib(jnotify,但我认为这没关系).我想用NetBeans来做.
我添加Bundle-NativeCode: /lib/jnotify.dll; osname=win32到我的manifest.mf文件并添加jnotify.dll到projektHome\src\lib\文件夹.但遗憾的是NetBeans正在覆盖 manifest.mf文件.
我怎么修好?我是否可以仅使用NetBeans执行此操作?这是Bundle-NativeCode: /lib/jnotify.dll; osname=win32正确的吗?我还听说我应该把dll哈希manifest.mf并签上我的罐子.真的吗?
有时我发现问题不是加载本机库的Java方法,而是需要该本机代码的第三方库.
问题是第三方库将在某些时候(通常在初始化时很早)
System.loadLibrary("native.dll");
Run Code Online (Sandbox Code Playgroud)
如果native.dll不在适当的位置,则会抛出错误.
如果您可以访问第三方库的java源代码,那么修补该代码可能很容易,您可以在使用第三方库之前轻松地从JAR中提取您的dll并运行System.load.
更新 我查看了JNotify源代码.这正是我所说的:
public class JNotify_win32
{
static
{
System.loadLibrary("jnotify"); /* *** */
int res = nativeInit();
if (res != 0)
{
throw new RuntimeException("Error initialiing native library. (#" + res + ")");
}
}
Run Code Online (Sandbox Code Playgroud)
把线***拿出来或用try-catch包围,用System.load()加载你就完成了.
| 归档时间: |
|
| 查看次数: |
13851 次 |
| 最近记录: |