本文介绍了JACOB和JRE 1.7出现UnsatisfiedLinkError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我整理了一个使用JACOB来访问iTunes的程序...在Eclipse中可以正常工作,但是当我导出它并在命令提示符下运行它时,出现了一个不满意的链接错误,告诉我jacob-1.17-M2-x86 .dll不在我的java.library.path中.

I put together a program that uses JACOB to access iTunes ... It works fine in Eclipse but when I export it and run it in the command prompt I get an unsatisfied link error telling me that jacob-1.17-M2-x86.dll is not in my java.library.path.

我尝试将其放入system32中,将本机库位置设置为其目录...我尝试使用system.setproperties技巧...而我无法弄清楚如何正确使用java -d

Ive tried putting it in system32, setting the native library location to its directory...ive tried using the system.setproperties trick...and i couldnt figure out how to use java -d properly

我还能做什么?香港专业教育学院一直在网上搜索以尝试使其兼容超过4个小时,但似乎没有任何效果.

What else can I do? ive been searching the web trying to get this compatible for over 4 hours and nothing seems to work.

推荐答案

我发现了一位Sun程序员撰写了一篇很棒的文章,修正了我的问题!

I found an amazing post by a sun programmer that fixed my problem!

public static void addDir(String s) throws IOException {
    try {
        // This enables the java.library.path to be modified at runtime
        // From a Sun engineer at http://forums.sun.com/thread.jspa?threadID=707176
        Field field = ClassLoader.class.getDeclaredField("usr_paths");
        field.setAccessible(true);
        String[] paths = (String[])field.get(null);
        for (int i = 0; i < paths.length; i++) {
            if (s.equals(paths[i])) {
                return;
            }
        }
        String[] tmp = new String[paths.length+1];
        System.arraycopy(paths,0,tmp,0,paths.length);
        tmp[paths.length] = s;
        field.set(null,tmp);
        System.setProperty("java.library.path", System.getProperty("java.library.path") + File.pathSeparator + s);
    } catch (IllegalAccessException e) {
        throw new IOException("Failed to get permissions to set library path");
    } catch (NoSuchFieldException e) {
        throw new IOException("Failed to get field handle to set library path");
    }
}

然后我在使用JACOB方法之前添加了

Then I added before my use of the JACOB methods

addDir("C:" + File.separator + "java" + File.separator + "jre7" + File.separator + "lib")

像护身符一样工作.

这篇关于JACOB和JRE 1.7出现UnsatisfiedLinkError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-15 14:51