您的位置:首页 > 编程语言 > Java开发

java导出成jar(含有第三方jar和配置文件)

2014-10-24 11:51 253 查看
昨天在写工具的时候遇到要将java程序打成jar文件的若干小问题,因为自己之前完全没有接触,现在总结下这个过程中遇到的问题方便自己以后查阅,也希望帮到有这个需求的菜鸟们,节约查阅资料的时间。

现将问题列出如下:

Q1:JAVA代码调用数据库存储过程问题

Answer:不说那么多,直接上代码,一看就明白(前后的一些其他部分省略):

//getBillResult:存储过程名,?为参数
String sql1 = "{call getBillResult(?)}";
CallableStatement statement = null;
statement = conn.prepareCall(sql1);
statement.setString(1, strings);//设置传入参数的值
rst2 = statement.executeQuery();
OK ,大概就是这样的一个过程。如果详细想了解CallableStatement对象的可以参看这篇文章《CallableStatement的用法 》;如果存储过程中定义有输出参数,不是我这种直接的select返回结果集的,在设置输出参数的时候会用到 callableStatement.registerOutParameter(?,?)这个方法,这个也可以看看这篇博客《jdbc调用带输出参数的存储过程》。

Q2:java文件导出成可执行的jar

Answer:使用fatjar,这个是Eclipse的一个插件,下载地址我也放了一个我资源里面,fatjar_0.0.31。插件的安装方式很多,我觉得最简单的就是将解压到的jar文件(不包含任何文件夹)直接放到Eclipse的plugins目录下重启完成即可。成功安装完成后,右键项目的时候就会有如图的变化:



后面导出的步骤就简单啦,根据提示找到main-class,然后next后根据需要选择output,一般默认就OK,然后就finish了。导出的jar默认是在自己的project下的





Q3:jar文件需要使用可改动的配置文件

Answer:例如我们链接数据库的配置文件,需要放在外面方便更改。一般项目的时候配置文件我们都会放在src目录或者专门的resource目录下,在编译的时候最终都是直接放到了classpath的目录下,jvm也是从这个目录去找然后加载。下面是我们一般的写法:

<strong>properties.load(DBUtil.class.getClassLoader().getResourceAsStream("/db.properties"));</strong>




当我们需要将jar文件放在同一个目录下,方便改动,代码如下:

<strong>properties.load(new FileInputStream("db.properties"));</strong>


OK,至此我们的这个需求就完成了。同时需要注意的一点是当我们自己开发JDK 的版本高于用户的版本的时候,本地执行没问题,客户执行jar文件可能会报main class not found的异常,这个我是将自己的版本降下来重新编译导出新的jar。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: