编译Java代码你当然可以直接使用Javac,但对于大多同学还是使用Eclipse编辑器来得快捷。这篇文章来说说我使用Eclipse编译后的执行之路,走路许多弯路,看我一一道来。

演示系统的架构

首先看看我的目录结构:

这个演示代码非常简单,结构也非常清晰,不能用于任何生产,只是为了演示而已。大致思路是:HelloJar项目为UserJar提供类库工具,HelloJar的Hello类只有一个方法:

package net.oseye;

public class Hello {
public String say(String name){
return "Hello,"+name;
}
}

而UserJar的RunMain类是程序入口,调用HelloJar的函数,代码如下:

package net.oseye;

import net.oseye.Hello;

public class RunMain {

	public static void main(String[] args) {
System.out.println(new Hello().say("oseye"));
}
}

整个架构就是如此,下面我们先来到处类库HelloJar吧。

使用Eclipse到处Jar包

  1. 在HelloJar项目上右键菜单,选择“Export...”;
  2. 在弹出的Export对话框选择JAR File选项,如:

    这里为什么选择JAR file而不是Runnable JAR file,稍后再说。
  3. 点击Next,选择项目和导出JAR的目录

    一路Next或直接Finish,完成。如果不出差错,这就成功导出了JAR包。

引用第三方JAR包

由于UserJar使用了HelloJar.jar,现在我们展示下如何引用第三方JAR包的。

在UserJar项目右键选择"Properties",打开对话框,点击“Add External JARs”按钮选择要引用的JAR包即可。

直接执行程序

在DOS命令行进入UserJar的bin目录执行,报了如下异常:

这是因为引用了第三方的JAR包,需要设置classpath才能执行成功:

java -cp .;d:\jar\HelloJar.jar net.oseye.RunMain

如果引用很多第三方JAR岂不是很麻烦。于是我想把UserJar打成一个JAR包执行。

执行JAR包

最开始在网上搜到可以使用fatjar插件,可以把项目包括第三方JAR打成一个包。于是安装了fatjar,使用也非常方便。

  1. 在UserJar项目上右键选择"Build Fat Jar";
  2. 在对话框设置如下:
  3. Next,选择需要打成一个包的第三方JAR包,Finish即可。
  4. 执行JAR包:
    java -jar UserJar_fat.jar

    结果:

  5. 哈哈,这样是不是更方便。其实解压UserJar_fat.jar你就能看到HelloJar.jar:

使用Eclipse打Runnable JAR file包

上文说到为什么选择JAR file而不是Runnable JAR file,这里就简单说下两者的区别。前者是只把项目打包,不包括第三方JAR,而后者可以,就像使用FatJar插件一样。

  1. 先在UserJar右键"Run As" > "Java Application"(这需要有Main Class才行),否则下面的步骤走不通的;
  2. 在UserJar项目右键,如第一张图,选择选择“Runnable JAR file”;
  3. 点击Next,进入Export对话框:

    一定要经过第一步的Run,否则你的“Lanuch configuration”是空的。点击Finish完成即可。
  4. 对Library handling的三个选项稍作说明:
    • Extract required libraries into generated JAR:只把第三方JAR包需要的class提取来和项目一起打包
    • package equired libraries into generated JAR:和fatjar差不多,是把第三方的JAR一起打包,只是和FatJar的目录不太一样,FatJar是放在lib文件夹下,而它是放在根目录了
    • 第三个选项是把第三方的JAR包拷贝到另一个子目录里,而使用MANIFEST来设置

      其中MANIFEST内容如下:

      Manifest-Version: 1.0
      Class-Path: . UserJar_lib/HelloJar.jar
      Main-Class: net.oseye.RunMain

总结:类库一般打包成JAR file,而可执行程序就没必要使用FatJar插件了,使用Eclipse自带的也蛮好的。

Eclipse打JAR包的使用的更多相关文章

  1. Eclipse导出jar包Unity打包错误

    前几天接SDK使用的是Android Studio昨天打开AndroidStudio后自动更新了gradler然后失败了然后AndroidStudio就挂了.就是用之前的方法Eclipse到处jar包 ...

  2. Eclipse生成Jar包方法

    Eclipse生成jar包   第一:普通类导出jar包,我说的普通类就是指此类包含main方法,并且没有用到别的jar包. 1.在eclipse中选择你要导出的类或者package,右击,选择Exp ...

  3. eclipse打Jar包问题

    1.首先,如果你的Java项目中没有任何第三方包,是十分容易的,只需要通过eclipse的Export就可以按操作一步步运行,如下: 选择你要导出的Java项目,右键选择Export,如下图,选择JA ...

  4. Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗?

    Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗? org.eclipse.wst.jsdt.core_1.3.300.v201410221502\li ...

  5. Eclipse 生成jar包

    Eclipse 生成jar包 打开 Jar 文件向导 Jar 文件向导可用于将项目导出为可运行的 jar 包. 打开向导的步骤为: 在 Package Explorer 中选择你要导出的项目内容.如果 ...

  6. eclipse中jar包打断点

    eclipse中jar包打断点 1. 下载工具 链接:http://pan.baidu.com/s/1dEF5tqL 密码:md4m 2. 增加jadeclipse功能 把 net.sf.jadcli ...

  7. eclipse导出jar包的方法

    第一:导出基本项目的jar包(此项目没有引用过第三方jar包) 1.在eclipse中选择你要导出的项目或package或类,右击,选择Export子选项: 2.在弹出的对话框中,选择java文件-- ...

  8. 【转】Eclipse打JAR包,插件FatJar安装与使用

    原文地址:http://blog.csdn.net/jikeyzhang/article/details/4731968 下载RUL: 下载fatJar插件,解压缩后是一个.../plugins/(n ...

  9. java eclipse打jar包和执行jar中的main函数

    jar包使用eclipse打包步骤 右键需要打包的项目->选择Export 到这里有两种打包的方式 1.如果项目中没有使用其他第三方包等,则直接选择下图中的第一种即可(JAR file) 2.如 ...

随机推荐

  1. easyUI linkbutton组件

    easyUI linkbutton组件: <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  2. Ceph QoS 初探(下)

    作者:吴香伟 发表于 2017/01/24 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 存储QoS是个可以做很大也可以做很小的特性.SolidFire认为将Q ...

  3. Madifest文件详解

    介绍 Madifest是个XML的描述文件,对于每个DLL有DLL的Manifest文件,对于每个应用程序Application也有自己的Manifest.对于应用程序而言,Manifest可以是一个 ...

  4. We Chall-Training: ASCII—Writeup

    MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...

  5. PROC UNIVARIATE过程

    EDA(探索性数据分析)最常用的过程步之一就是PROC UNIVARIATE. 首先先看一个最简单的PROC UNIVARIATE程序: PROC UNIVARIATE DATA=SASHELP.FI ...

  6. 龙珠超的新OP【限界突破×サバイバー】

    这首歌真的很燃 下载>>   限界突破×サバイバー 中文歌词 演唱:冰川清志 兴奋了!就去宇宙吧 最先端的“着迷”怎么样! 握在手中 突然想要大笑 糊里糊涂也习惯了吗! I can't g ...

  7. 调用win32 api 函数SendMessage() 实现消息直接调用

    简单的调用例子, 适合初学者学习,当然 我也是初学者. #include <windows.h> #include <stdio.h> #include <stdlib. ...

  8. swift 可选类型笔记

    晚上十一点半了,看书累了,原本想睡了的,想了想,还是把刚看的总结一下,把这篇笔记写了吧.广州下雨,真特么的冷..好了,废话不说了,说正题说说Swift可选类型. 先定义一个变量: var string ...

  9. 基于Ubuntu12.04-server版的openstack F版搭建步骤

    本文为双节点搭建,分为计算(IP1)和控制节点(IP2) 说明: 计算节点组件: 1.mysql 2.keystone 3.Nova 4.glance 5.rabbitmq 控制节点组件: 1.cin ...

  10. Java程序测试之线程的同步

    package tickect; class ticketnum implements Runnable { public int tickets = 100; String str = new St ...