说实话,我是一个Java初学者。下面是我最近研究jar命令时的一些小小的发现,希望能对大家有点作用。
我写java程序一直以来是以Eclipse为编辑器的,很少用记事本编辑,在省事的同时也忽略了对java命令集的学习,也就造成了我直到现在才了解了一点cmd命令行格式下运行java程序的方法。
我先介绍一下我的软件环境:
JDK:jdk-6u3-windows-i586-p.exe(最新)
Eclipse:Eclipse 3.2.1
Windows:Windows 2003 Server
JDK:G:/Java/JDK6.3
Eclipse中编辑的Java程序:G:/Java/Eclipse/workspace/Book/doItMyself
(一)cmd命令行格式下生成和运行jar文件
下面我在G:/Java目录下建立一个HelloWorld.java文件,如下:
public
class
HelloWorld
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
public static void main(String[] args)...{
System.out.println("Hello world.");
}
}
下面我在G:/Java目录下建立一个HelloWorld.java文件,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
为了确保jar文件能运行,这时应该在MANIFEST.MF文件中加上一行:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
上面是不加入MANIFEST.MF的写法,事实上我们总是喜欢事先编辑好MANIFEST.MF文件:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
再在cmd命令行格式下:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
上面两种方法效果是一样的,都生成了HelloWorld.jar文件,关键看你喜欢哪一种了。
现在就可以运行HelloWorld.jar文件了:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
输出正常,没有任何问题。
(二)在Eclipse中生成和运行jar文件
首先在Eclipse中编写HelloWorld.java,如下:
package
doItMyself;
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
public class HelloWorld ...
{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/** *//**
* @param args
*/
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
public static void main(String[] args) ...{
// TODO 自动生成方法存根
System.out.println("Hello world.");
}
}
我们发现Eclipse为我们自动生成了一些注释代码,你还别小瞧了它们,在第三点中我会再次提到。
运行HelloWorld,一切正常。
现在我们开始生成HelloWorld.jar文件:
(1) 在“包资源管理器”视图中找到HelloWorld,点击右键弹出快捷菜单,选择“导出...”;
(2) 在弹出的“导出”对话框中选择“JAR文件”,单击“下一步”;
(3) 在弹出的“JAR导出”对话框中的“JAR文件:”文本框中填入jar文件的存放路径,我这里是:G:/Java/Eclipse/workspace/Book/doItMyself/HelloWorld.jar;
![](https://p-blog.csdn.net/images/p_blog_csdn_net/polaris_chow/20071017-3.JPG)
(4)
连续单击两次“下一步”,在下图中填入“Main-Class”值:doItMyself.HelloWorld(一定要加上包名),或者用“浏览”功能,这个更易用;
(5) 单击“完成”,即制作成功了一个jar文件。这时我们在“包资源管理器”中就能看到HelloWorld.jar文件了。
这时我们不妨再看看Eclipse生成的这个jar文件和在cmd格式下生成的有什么不同。我们很快就会发现,存在着两种不同:
(1) jar文件内部的结构发生了变化:
cmd格式下的结构是:
META-INF/
META-INF/MANIFEST.MF
HelloWorld.class
Eclipse格式下的结构是:
META-INF/
META-INF/MANIFEST.MF
doItMyself/
doItMyself/HelloWorld.class
(2) META-INF文件夹下的MANIFEST.MF文件的内容,两者是不同的:
Eclipse下的内容是:
Manifest-Version: 1.0
Sealed: true
Main-Class: doItMyself.HelloWorld
<回车>
现在我们来运行这个生成的jar文件:
(1)
在Eclipse主菜单中选择“运行/外部工具/外部工具”,弹出“外部工具”对话框;
(2)
在“名称”文本框中填入要运行的jar文件——HelloWorld.jar,在“位置”中用浏览找到java.exe文件,如图:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/polaris_chow/20071017-7.JPG)
(3) 在“自变量”文本框中填入“-jar ”(jar后面一定要加空格),在单击“变量”按钮,在其中选择“resource_loc”,回到“外部工具”界面,如图:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/polaris_chow/20071017-8.JPG)
(4) 单击“应用”,然后单击“运行”,在“控制台”视图中就能输出正确的结果了。
以上便是在Eclipse中生成并运行jar文件了。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
我们发现Eclipse为我们自动生成了一些注释代码,你还别小瞧了它们,在第三点中我会再次提到。
运行HelloWorld,一切正常。
现在我们开始生成HelloWorld.jar文件:
(1) 在“包资源管理器”视图中找到HelloWorld,点击右键弹出快捷菜单,选择“导出...”;
(2) 在弹出的“导出”对话框中选择“JAR文件”,单击“下一步”;
(3) 在弹出的“JAR导出”对话框中的“JAR文件:”文本框中填入jar文件的存放路径,我这里是:G:/Java/Eclipse/workspace/Book/doItMyself/HelloWorld.jar;
以上便是在Eclipse中生成并运行jar文件了。