当前位置:编程学习 > JSP >>

java中Web Project中加载dll文件的终极解决方案

1.首先把要加载的dll文件拷贝到Web Project的src目录下

2.声明一个TestDLL类,名字请根据实际命名

 代码如下 复制代码

package com.anllin.jni;

public class TestDLL
{
    public TestDLL(String... filenames)
    {
        // 取得src下的物理路径,
        String path = TestDLL.class.getResource("/").getPath();
        // 将路径里的%20替换成空格,不然在src目录下会找不到dll文件
        path = path.replaceAll("%20", " ");
        //output : /D:/myEclispe8.6 projects/jnitest/WebRoot/WEB-INF/classes/
        System.out.println(path);
        //注:使用System.load()时,文件名必须包含.dll后缀,如test1.dll
        for (String filename : filenames)
        {
            System.load(path + filename);
        }
    }

    public native void test1();

    public native void test2();

    public native void test3();
}

 

3.声明一个调用类TestInvoker,名字请根据实际命名

 代码如下 复制代码

package com.anllin.jni;

public class TestInvoker
{
    private TestDLL testDll;

    public TestInvoker()
    {
        // 注意,一定要确定DLL之间的依赖关系,谁先加载,谁后加载,不然会报错,先加载的放在前面
      testDll = new TestDLL("test1.dll", "test2.dll", "test3.dll");
    }

    public void test1()
    {
        testDll.test1();
    }

    public void test2()
    {
        testDll.test2();
    }

    public void test3()
    {
        testDll.test3();
    }
}

4.这种Dll文件加载方式的好处:

a.当你有多个Web Project,每个都要去调用DLL时,就不冲突了,如果DLL是放在tomcat的bin下的话,每加载一次都是加载相同的dll,会报错,我做的项目就是这样。

b.DLL文件好管理,放到src下就行,就算多个Web Project,每一份DLL都是一个拷贝,彼此之间不依赖,耦合性低。

c.方便布署,将项目打包成war包后,就象一般项目一样,放到tomcat里就行了。

补充:Jsp教程,Java技巧及代码
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,