打包jar类库与使用jar类库
翻译人员: 铁锚
翻译时间: 2013年11月17日
原文链接:
Build a Java library by using jar file
代码复用是软件开发中很重要的一个原则.将常用的函数构建为类库是一个很好的解决方法,什么时候要用到这些功能,只需要调用就好了.
下面将演示如何导出jar类库与使用jar包:
1. 导出jar类库
打开Eclipse,选定工作空间.工作空间一般来说,是用户保存配置信息,以及保存源码的地方.
然后在菜单栏中选择 File --> New --> Java Project, 选择以后的界面将如 图2 所示。
如果没有Java Project这个快捷项,可以选择 Other,然后再进行选择,选择 Other以后的界面如 图1 所示:
图1
如图1所示,在其中找到 Java --> Java Project 以后,选择Next即可进入下一步, 如 图2 所示:
图2
在图2所示的界面中,输入项目的名称,比如: StringLib, 使用默认的存储位置,使用默认的JRE, 然后点击 Finish 即可.
项目创建完成以后,关闭不必要的那些View视图界面,(点击X即可).
接着,选择左侧Package视图下的src目录,右键单击, 选择 New --> Class , 如 图3 所示:
图3
在接下来的向导页面中,输入 类名,比如: StringUtil , 选择包名,比如: com.renfufei.util ,然后点击完成即可,如 图4 所示:
图4
创建类完成以后,根据需要写相关的代码,示例代码如下:
package com.renfufei.util; import java.util.Random;
import java.util.UUID; public class StringUtil {
/**
* 判断某个字符串不为空
* @param s
* @return
*/
public static boolean notNull(String s){
return !isNull(s);
}
/**
* 是整形正整数
* @param s
* @return
*/
public static boolean isLong(String s){
if (null != s && s.matches("^[+-]?\\d+$")) {
return true;
} else {
return false;
}
}
/**
* 判断某个字符串是空
* @param s
* @return
*/
public static boolean isNull(String s){
return null == s || s.trim().length() < 1 || "null".equalsIgnoreCase(s);
}
/**
* 随机生成一串字符串
*/
public static String getUUID(){
String uuid=UUID.randomUUID().toString();
return uuid;
} /**
* 转换为HTML,防止JS注入
* @param s
* @return
*/
public static String toHTML(String s){
if (isNull(s)) {
s = "";
}
s = s.replaceAll("&", "&");
s = s.replaceAll("<", "<");
s = s.replaceAll(">", ">");
s = s.replaceAll("\"", """);
s = s.replaceAll(" ", " ");
s = s.replaceAll("\r\n", "\n");
s = s.replaceAll("\r", "\n");
s = s.replaceAll("\n", "<p>");
//
return s;
} public static String handleSpecialChar(String s){
if (isNull(s)) {
s = "";
}
s=s.replaceAll("\r","").replaceAll("\n","").replace("\\","\\\\").replace("\"","\\\"").replace("<", "<").replace(">", ">");
//
return s;
} /**
* 截断。返回截断后的字符串
* @param s 需要阶段的字符串
* @param beginIndex 开始index
* @param endIndex 结束index
* @return
*/
public static String truncate(String s,int beginIndex,int endIndex){
if (null == s) {
return "";
}
int len = s.length();
if (endIndex > len) {
return s.substring(beginIndex);
}else {
return s.substring(beginIndex, endIndex)+"...";
}
}
/**
* 随机生成N位字符串--大写字母和数字
* @param num
* @return
*/
public static String getRandStr(int num){
String randString = "23456789ABCDEFGHJKMNPQRSTUVWXYZ";
return randStr(randString,num);
} private static String randStr(String randString,int num){
Random rnd = new Random();
String rand = "";
for(int i=0;i<num;i++){
rand =rand + String.valueOf(randString.charAt(rnd.nextInt(randString.length())));
}
return rand;
} // 简单的单元测试
public static void main(String[] args) {
String s = "--100";
System.out.println(isLong(s));
}
}
书写过程中,记得随时 CTRL+S 保存,如果书写错误,可以使用 CTRL+Z 进行撤销.
保存以后,在左侧包浏览器 视图界面中,选择需要导出的包,或者选择项目, 点击右键,在弹出菜单中选择 Export ,如 图5 所示:
图5
在接下来的向导界面中,找到并选择 Java --> JAR File 选项,点击Next,如 图6 所示:
图6
在接下来的界面中,选择要导出的资源,如
图7 所示,我们只选择了
com.renfufei.util 这个包, 在下方有几个可勾选的选项,其中一个是 导出生成的class文件,还有一个是 导出Java源文件, 图7中都用红色方框标识出来了, 并浏览选择输出文件,此处我们将输出位置选择为桌面,文件名输入:
myutil.jar. 随后点击 Finish即可.
图7
OK,如果没有报错,那么导出完成,请在桌面或者保存位置查看导出的jar类库文件,可以使用 winRAR工具或者zip工具打开查看 jar文件的结构。
2. 使用 jar 类库
说明,如果是JavaEE或者JavaWeb项目,在Eclipse中,只需要将 相应的 jar 文件拷贝到 WebRoot下的 WEB_INF 下 的 lib 目录中即可. 可以略过下面的部分.
新建Java Project, 选择项目名字,比如 UseLib , 然后在项目上单击右键, 在弹出菜单中选择 New --> Folder ,如图8 所示:
图8
在弹出的向导界面中,输入文件夹名字, 如 lib ,然后点击 Finish 完成.如 图9 所示:
图9
完成以后,将需要导入的jar文件,比如 myutil.jar 在文件浏览器中复制( CTRL+C ),然后进入Eclipse,点击 lib 文件夹, 粘贴( CTRL +V ).
然后在 lib下的 myutil.jar 文件上单击右键,在弹出菜单中选择 Build Path --> Add to Build path ;此时,就将类库文件加入到执行路径中了,如 图10 所示:
图10
可以在 Referenced Libraries 中看到相应的 jar 包.至此,导入完成.
3. 测试
在UseLib项目的 src中, 新建一个类 TestUtil, 包 com.renfufei.test ,可以看到,编译并没有出错,选择右键,Run As --> Java Application. 查看输出结果.
测试代码如下:
package com.renfufei.test;
import com.renfufei.util.StringUtil;
public class TestUtil {
public static void main(String[] args) {
String num = "100";
System.out.println(StringUtil.isNull(num));
}
}
相关文章:
- Library vs. Framework?
- Eclipse: java.lang.UnsupportedClassVersionError: Bad version number in .class file
- Eclipse RCP Tutorial: Export Eclipse RCP Application to be a Product
- How to make a Web crawler using Java?
打包jar类库与使用jar类库的更多相关文章
- Android tips(八)-->Android Studio打包apk,aar,jar包
文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独有的类库包,而jar包是java ...
- Android Studio打包apk,aar,jar包
转载请标明出处:一片枫叶的专栏 文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独 ...
- maven 打包含有第三方依赖的 jar 包
maven 打包含有第三方依赖的 jar 包:mvn assembly:assembly
- 将 java 项目打包成可运行的 jar 包(main 函数带参数),并上传到 linux 服务器上运行
一.概述 java项目有两种架构,一种是 B/S 架构的,一种是 C/S 架构的. 对于 B/S 架构来说,我们常见的 java ee 即是 B/S 架构,通常,开发人员会在本地进行开发,然后将项目打 ...
- maven项目打包成可执行的jar
编写功能类: package com.hpay.FileToZkUtil; import java.io.File; import java.io.FileInputStream; import ja ...
- hadoop:将WordCount打包成独立运行的jar包
hadoop示例中的WordCount程序,很多教程上都是推荐以下二种运行方式: 1.将生成的jar包,复制到hadoop集群中的节点,然后运行 $HADOOP_HOME/bin/hadoop xxx ...
- eclipse打包jar时包含第三方jar包的相关问题
我用的是mars4.5版本的eclipse 需求:要把写好的工程打成jar包,并能直接运行.工程用了若干个第三方jar. 在打包的时候,eclipse提供的打包方法不能引用第三方jar包,导致了出现C ...
- java打包/命令行方式运行jar(命令行进行程序测试)
public class Testtmp { public static void main(String[] args) { // TODO Auto-generated method stub f ...
- Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.java
Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...
随机推荐
- 五年26个版本:Linux系统内核全程回顾
Phoronix.com今天将他们对Linux系统的研究发挥到了极致:从2005年年中的2.6.12,到正在开发中的2.6.37,五年多来的26个Linux内核版本来了个“群英荟萃”! 完成如此庞大规 ...
- Android studio之更改快捷键及自动导包
更改AS中的代码提示快捷键,AS做的也挺智能的,在Keymap中可以选择使用eclipse的快捷键设置,但是虽然设置了,对有些快捷键还是不能使用,那么就需要我们手动去修改了. 在代码提示AS默认的快捷 ...
- java单链表代码实现
用惯了C++,java写起来果然不太爽...不废话了,上代码... package javaInnerclassDemo; class Link{ class Node{ private String ...
- ExpandableListView(三)只展开一个group,没有child不展开group
本文是自己在实践中,发现的问题. 有时候想让界面更加的人性化,就要实现很多的效果,比如只展开一个group,在点击下个group的同时,关闭之前的group 在一个ExpandableListView ...
- SQLServer 2008的组成
SQLServer 2008的组成: 1.主要数据库文件:有且只有一个,文件后缀为.mdf. 2.日志文件:至少有一个,文件后缀为.ldf. 3.次要数据库文件:任意个,文件后缀为.ndf.
- hibernate -inverse
one to many inverse=false只能设置维护关联关系的多的一方, inverse属性: 默认为false,表示本方维护关联关系. 如果为true,表示本方不维护关联关系(并不意味着对 ...
- BZOJ 1770: [Usaco2009 Nov]lights 燈( 高斯消元 )
高斯消元解xor方程组...暴搜自由元+最优性剪枝 -------------------------------------------------------------------------- ...
- BZOJ 1046: [HAOI2007]上升序列(LIS)
题目挺坑的..但是不难.先反向做一次最长下降子序列.然后得到了d(i),以i为起点的最长上升子序列,接下来贪心,得到字典序最小. ----------------------------------- ...
- 基于FPGA的key button等开关消抖,按键消抖电路设计
最近要用上一个key消抖的功能.于是找到了之前写的并放入博客的程序,发现居然全部有问题.http://www.cnblogs.com/sepeng/p/3477215.html —— 有问题,包括很多 ...
- 数组length属性的一些特性
~~·数组的length属性是可读写的 var colors = ["blue","red","green"];colors.length ...