zoukankan      html  css  js  c++  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里就行了。

  • 相关阅读:
    Beginning Python From Novice To Professional读书笔记
    Google's Python Class
    Screen scraping 3
    Screen scraping 1
    Screen scraping 2
    《发现你的销售力量》读书笔记
    不可思议的每日培训
    “项目计划与跟踪最佳实践”讲座(2010年7月)现接受企业申请
    “活用类图,把握需求主动权”讲座(2010年6月)现接受企业申请
    项目健康状况检查
  • 原文地址:https://www.cnblogs.com/zfc2201/p/2310033.html
Copyright © 2011-2022 走看看