有时候需要将j2se工程导出,这样可以在别处运作,就不必拘泥于开发感觉中才能运行了。
具体做法如下:
方法一:(工程没有引用外部jar包时,直接导出)

选中工程---->右键,Export...--->Java--->JAR file--->next-->选择jar file的路径及名称-->next-->next---> 选择main class--->finish.

方法2:

当工程引用了其他的外部jar时,由于eclipse不支持同时导出外部jar包的功能,所以比较麻烦一点;具体步骤如下:
生成manifest file:选中工程--->右键,Export--->Java--->JAR file--->选择jar file的路径及名称--->next--->next--->next;
此时来到了方法1中要选择main class的窗口,但这里先不选择main class,选择最上方的Generate the manifest file, 勾上Save the manifest in the workspace,在Manifest file:中输入file的名称,如/testProject/main,(其中testProject为工程名,main为manifest file的名称)点击finish,回到工程,打开刚刚生成的main,在这里要输入如下信息:
Manifest-Version: 1.0
Main-Class: com.pacong.convert.auto.propertes.ConvertAutoProperties
Class-Path: jxl.jar
其中,Manifest-Version: 1.0为刚刚自动生成的manifest版本号;
Main-Class: com.pacong.convert.auto.propertes.ConvertAutoProperties为main class所在类;
Class-Path: jxl.jar为外部jar包名称,这里是告诉导出的jar包,所要用到的外部的jar包的路径及名称。
上面都做完了就可以导出带外部jar包的jar包了,步骤如下:
选中工程--->右键,Export--->Java--->JAR file--->选择jar file的路径及名称--->next--->next--->next,这时又来到了选择main class的窗口,但这里也不选择main class,选择Use existing manifest from workspace,在Manifest file:里选择刚刚生成的main,如:/testProject/main,点击finish,到此就大功告成啦;假设生成的jar包的名称为 test.jar,那么Class-Path中引入的jxl.jar要和test.jar位于同一个目录下。

这里还有一点要注意:
如果想在命令行中运行刚刚生成的jar,命令如下:
java -jar test.jar
如果在jar中有一些System.out.prinln语句,运行后想看看打印出的内容,可以用一下命令:
java -jar test.jar >log.txt
输出信息会被打印到log.txt中,当然log.txt自动生成,并位于和test.jar一个目录中。

这里也可以新建一个start.bat文件,创建后;右键---编辑,输入:java -jar test.jar >log.txt;以后直接双击start.bat即可运行test.jar啦。

注意,如果你是在文件导出放在如:E盘,则你需要导入得包也要放在这个目录里。

错误分析:

jar打包出现java.io.IOException: invalid header field 解决方案

执行:

D:\aaa\DMDemo>jar -cvfm demo.jar MANIFEST.MF com
java.io.IOException: invalid header field
        at java.util.jar.Attributes.read(Attributes.java:393)
        at java.util.jar.Manifest.read(Manifest.java:182)
        at java.util.jar.Manifest.<init>(Manifest.java:52)
        at sun.tools.jar.Main.run(Main.java:132)
        at sun.tools.jar.Main.main(Main.java:1022)

----------------------------------------------

错误分析:

Manifest-Version: 1.0
Class-Path: 
Created-By: 1.6.0_06 (Sun Microsystems Inc.)
Main-Class: com.demo.HelloWord

每个标签冒号后都跟上一个空格

最后一行需要有一个回车键,否则后面那一行是不能打包进去的

------------------------------------------------

再执行:

D:\aaa\DMDemo>jar -cvfm demo.jar MANIFEST.MF com
标明清单(manifest)
增加:com/(读入= 0) (写出= 0)(存储了 0%)
增加:com/demo/(读入= 0) (写出= 0)(存储了 0%)
增加:com/demo/HelloWord.class(读入= 547) (写出= 341)(压缩了 37%)

D:\aaa\DMDemo>java -jar x.jar
Unable to access jarfile x.jar

D:\aaa\DMDemo>java -jar demo.jar
Hello Word

D:\aaa\DMDemo>

-------------------------------------------------------------------
最后说明:Manifest技巧

总是以Manifest-Version属性开头

每行最长72个字符,如果超过的话,采用续行

确认每行都以回车键结束,否则改行将会被忽略

如果Class-Pass中存在路径,使用“/”分隔目录,与平台无关

使用空行分隔属性和package属性

使用"/"而不是"."来分隔package和class。比如com/example/myapp/

class要发.class结尾,package要以/结尾

最新文章

  1. python-phpbb3 (可以用python3 操作 phpbb3 论坛的模块)
  2. Servlet获取request的变量方法.
  3. ubuntu 下创建桌面快捷方式
  4. .vimrc文件配置及航意
  5. JS获取上传文件的绝对路径,兼容IE和FF
  6. 【性能诊断】三、单功能场景的性能分析(RedGate Profiler)
  7. Fegla and the Bed Bugs 二分
  8. HDU 1257 最少拦截系统 (DP || 贪心)
  9. Linux系统调用列表
  10. JavaScript事件处理程序的3种方式
  11. java日期转换
  12. CSDN文章抓取
  13. CSS3的动画属性
  14. Java进阶(八)Java加密技术之对称加密 非对称加密 不可逆加密算法
  15. python MRO:C3算法
  16. 初识git(17/8/21)
  17. appium:运行脚本时,报404的解决办法
  18. JDK生成证书:
  19. flask基础知识
  20. Java语法基础动手动脑

热门文章

  1. Shiro笔记---身份验证
  2. [Spark]Spark-sql与hive连接配置
  3. loadrunner常用web动作函数
  4. CSPS模拟 64
  5. 最新JetBrains PyCharm 使用教程--安装教程(一)
  6. 开源 ERP 系统 GoodERP
  7. len、is、==、可变于不可变类型
  8. 那些年用过的UI开发平台
  9. PHP实现日历签到,并实现累计积分功能
  10. VS链接文件设置