加进package,然后调用dll时用绝对路径

解决方案 »

  1.   

    jFresH_MaN()(AbsolutelyFresh)(java欣人) 加进package,然后调用dll时用绝对路径不行啊,怎么写绝对路径呢?
    "c:/windows/system32/xxx.dll"???这样反而找不到dll
      

  2.   

    那我想问一下你的dll是不是用jni做的?
    如果不是,怎么样也调用不了
      

  3.   

    不是我做的,我没有.h文件,只有一个java类,而这个类已经可以调用dll了,但是这个类没有package
      

  4.   

    最关键的问题就在于我没有.h文件,而这个dll是别人已经用jni做的,所以我没有.h文件的情况下没法用jni重做一个dll
      

  5.   

    c:\\windows\\system32\\xxx.dll这样试试吧
    是报找不到这个资源的异常吗?对了,你的classpath里面有没有.啊?
    如果有的话,在你的工作目录下面用相对路径就行了啊
      

  6.   

    你说的都不是关键,怎么调用一个dll和重新用jni制作一个dll我都会,而现在有一个java类已经能调用dll了,也就是说我的library已经没有问题了,可是这个java类没有package,所以别的java类没法调用这个java;然后我没有.h文件,所以我没法重新用jni做一个dll;
      

  7.   

    没有package,别的类就调用不了?我还没听说过。你那个class里一定是有native方法,它和那个dll是对应的,不能修改package.
    如果一定要修改package的话,你要重写那个dll。
    或者你对windows编程还可以的话,在写个dll来调用原来的dll.
    在或者找个工具,把那个dll里面的export函数名字改成带package的。
      

  8.   

    已经解决了,重写dll是不可能了,因为没有.h文件,根本不知道这个dll里面有些什么方法;也不知道该怎么调用;
    最后用的是反射技术;package com;import java.lang.reflect.Method;
    public class UseTop {
        public static void main(String[] args) throws Exception {
            Class cls = Class.forName("Top");
            Method method = cls.getMethod("log", null);
            Object o = cls.newInstance();
            method.invoke(o, null);
        }
    }