2013-03-14 121 views
0

运行的JAR我想我的程序导出为一个可运行的jar,打包必要的库(Apache的POI)。 .jar已创建,但不起作用。用这些库进行部署有什么困难吗?因为程序本身在eclipse中运行得很好。与Apache POI

+3

你能带我们走过你把构建JAR的步骤是什么?你能更具体地说明“它不工作”吗? – 2013-03-14 18:18:56

+0

导出 - >运行jar - >提取所需的库 - >完成。该程序启动,但是当它应该开始使用库来读取一个excel文件 - 什么都不会发生。 – MustSeeMelons 2013-03-14 18:28:17

+0

控制台中的任何错误?你是从命令行('java -jar myJAR.jar')运行吗? – 2013-03-14 18:36:29

回答

2

有几个问题要问自己,在这种情况下:

  • 哪里程序失败?控制台中是否有错误?您是否从命令行(java -jar myJAR.jar)运行,以便您可以看到控制台输出?
  • 好的,所以你得到一个NullPointerException读取文件。在JAR中读取文件,或者它在哪里?程序如何知道读取文件的位置?
  • 是否真的与JAR打包的方式有问题,或者是你的代码查找并读取文件的方式吗?也许你的代码假定从JAR运行时无法解析的相对位置。
2

有以下策略。

  1. 创建您的罐子。把它放到选定的目录。把你的应用程序的所有依赖关系。根据您的平台创建脚本(shell脚本,批处理文件等),其中java命令行要么是硬编码的,要么是生成的。该行必须包括类路径,例如 java -cp myapp.jar;poi.jar com.company.MyMain
  2. 创建确实可运行罐,即,可以使用命令等java -jar myapp.jar执行罐子。如果您的应用程序依赖这个jar必须MANIFEEST.MF文件,使用财产Class-Path
  3. 包所有的类都和你相依到一个大的jar文件中定义的类路径。

显然,所有这些操作都应该是自动化的自制脚本或通过可用的构建工具之一。