cmd里面执行Java命令时,如果要运行的java程序需要使用第三方运行库,如数据库驱动等
应该如何加入相应的包使其运行?公司其他部门需要检查工作,让把数据库拷贝一份,现在做的项目是SQLSERVER-2000的,要求备份出来的
是要insert into的字符串格式的.sql文件,2000不支持导出这种格式的,自己写了个Java程序已解决。
但想留着以后使用,改成GUI形式的了,在MyEclipse下使用可以.现在是用Eclipse导出成Jar包之后,执行jar包时候不能找到数据库驱动类.
文件结构:d:\OutputData/OutputData.jar
         d:\OutputData/lib/*.jar(匹配的是常用的数据库驱动jar包--SQL2000,MYSQL,ORACLE等)。
我用命令行调用D:\OutputData> java -classpath "lib/*.jar" -jar OutputData.jar
执行Java程序之后填入必要的参数,然后查询数据库,出现Exception:不能找到SQLSERVER2000的驱动程序(类),
问题是如何使用java命令让程序执行的时候把lib/*.jar里的jar包加入其运行环境?

解决方案 »

  1.   

    最简单最可靠的方法就是在应用程序启动的时候自己加载jar文件。显示一段代码示例:
    File file = new File("lib/commons-lang-2.3.jar");
    if (file.exists()) {
    URLClassLoader classLoader = URLClassLoader
    .newInstance(new URL[] { file.toURI().toURL() });
    Class<StringUtils> clazz = (Class<StringUtils>) classLoader
    .loadClass("org.apache.commons.lang.StringUtils");
    System.out.println(clazz);
    System.out.println(StringUtils.isNotBlank(""));
    Method method = clazz.getMethod("toStr", String.class);
    System.out.println(method);
    Object ins = clazz.newInstance();
    Object ret = method.invoke(ins, "123");
    System.out.println(ret);
    }批注:cp参数是不支持通配符的。java -cp ./lib/test1.jar:./lib/test2.jar -jar OutputData.jar 使用这种形式。
      

  2.   

    貌似要把*.jar,一个个加到classpath里面。
      

  3.   

    假设lib目录下有a.jar b.jar c.jar:
    D:\OutputData>java -cp OutputData.jar;lib\a.jar;lib\b.jar;lib\c.jar your.MainClass最好的做法是在打包时,在Manifest里指定Class-Path
      

  4.   

    引用要怎么写?现在我做的那个只支持3个数据库的全部表导出,但这样已经好多jar包了,以后再添加要有多麻烦...怎么能像通配符那样调用?
      

  5.   

    问题解决了...,还是需要一样一样加...
    还真是麻烦.又想了个办法.
    是不是可以用bat批处理命令,
    .>set CLASSPATH %CLASSPATH%;lib;
    .>java -jar OutputData.jar
      

  6.   

    问题解决了...,还是需要一样一样加...
    还真是麻烦.又想了个办法.
    是不是可以用bat批处理命令,
    .>set CLASSPATH=%CLASSPATH%;lib;
    .>java -jar OutputData.jar