- 浏览: 111728 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
qiqibaba1990:
JAVA与JS的数据交互 -
月氏城下:
为什么是5个,不是9个吗?
JSP五大内置对象 -
mida:
有点文字时不时更好了。
JAVA与JS的数据交互 -
pxx199248:
收藏楼,不错
常用JS驗證
进入dos操作符窗口
cd进入要打成jar包的class文件所有文件夹目录
jar cvf [生成jar的名称.jar] [列出class文件] //若有多个,以空隔隔开
如:
一。操作零散的单个或几个class文件
jar cvf ibstool.jar com/cn/ibs/TurnD.class com/cn/ibs/TurnB.class
二。把一个文件夹下面的所有class文件打成jar包
jar cvf ibstool.jar * 回车
生成可执行jar包:
编译的class文件中必须有main入口函数的类方能生成可执行jar包,如:
public static void main(String[] args)
生成的方法步骤:
方法一:
1。用上面的方法把class与相应的结构目录打成jar包
2。解压这个jar包到当前目录
3。编辑META-INF/MANIFEST.MF,给jar包指定程序入口main函数,内容为:
Manifest-Version: 1.0
Created-By: 1.5.0_06 (Sun Microsystems Inc.)
Main-Class: MutiThread (回车)
(注意回车与空格,这个文件的内容排版必须标准)
4。再用winzip把这些文件压缩成jar格式包,或者压成zip包,再改后缀名为jar也可。
方法二(推荐):
2. 打成可执行的jar包
cmd操作窗体中进入class文件的根目录,之所以说根目录,是因为下面其下面还可以有很多文件包(夹);
在此目录准备好一个manifest.mf文件,其内容为:
Manifest-Version: 1.0
Created-By: 1.5.0_06 (Sun Microsystems Inc.)
Main-Class: MainEntry
main-class为指定所有类的main方法所在的类名.
最后用命令: jar cvfm jarname.jar manifest.mf *
3.测试可执行jar包.
用命令:java -jar jarname.jar
4.为可执行jar包制作bat文件.
例如 :
@echo off
rem
rem Set BQ_IBS_HOME before running this script.
rem
if not "%BQ_IBS_HOME%" == "" goto CONT0
set BQ_IBS_HOME=c:\ibs
:CONT0
@echo on
java -DBQ_IBS_HOME=%BQ_IBS_HOME% -jar jarname.jar
:END
网络引用:
java jar命令
比如您的class包存放路径为 d:\com\demo (demo是个目录,下面含有子文件夹及class文件)
具体操作如下:
1、打开dos窗口,进入demo目录
cd d:\com\demo
2、执行 jar cvf demo.jar * 回车
3、在demo目录下面你会发现demo.jar
具体参数请看下面的解释:
用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...
选项:
-c 创建新的存档
-t 列出存档内容的列表
-x 展开存档中的命名的(或所有的〕文件
-u 更新已存在的存档
-v 生成详细输出到标准输出上
-f 指定存档文件名
-m 包含来自标明文件的标明信息
-0 只存储方式;未用zip压缩格式
-M 不产生所有项的清单(manifest〕文件
-i 为指定的jar文件产生索引信息
-C 改变到指定的目录,并且包含下列文件:
如果一个文件名是一个目录,它将被递归处理。
清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。
示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有文件存档到一个名为 'classes.jar' 的存档文件中:
jar cvfm classes.jar mymanifest -C foo/ .
来个小例子试试看:
我们只有一个HelloWorld,如下:
public class HelloWorld{
public static void main(String[ ] args){
System.out.println(“Hi, Hello World!”);
}
}
将这个java文件存到C盘跟目录下,ok,接下来,
在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javac HelloWorld.java,然后继续输入:jar cvf hello.jar HelloWorld.class,回车后去你的C盘看看,多了什么,没错 hello.jar 。
基本的步骤我们现在都知道了,你可以自己去尝试一下随着jar后面的参数的不同,结果有什么变化。
紧接着我们看看如何运行我们的jar包。
在进入正题之前,你要先打开我们刚刚做好的jar包看看,多了什么呢,META-INF目录?再看看里面是什么,还有一个MANIFEST.MF文件是不是?用文本编辑器(我这里是UltraEdit)打开它看看:
Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
就是这样。这里我们对它进行修改,加一句:Main-Class: HelloWorld (在第三行)。这个就是我们之前写的那个类,也就是我们的入口类。也即,
Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
Main-Class: HelloWorld
接下来,我们在命令提示符里执行:
jar umf MANIFEST.MF app.jar (应该是hello.jar吧)
这样我们使用了我们自己的MANIFEST.MF文件对原来默认的进行了更新。你不妨可以再进去看看是不是添上了Main-Class: HelloWorld这一句。 (是吗,我怎么没试出来,提示java.io.FileNotFoundException:MANIFEST.MF(系统找不到指定的文件)怎么回事?)
Ok,这个最后的一步了,来验证我们做的一切,在命令提示符中输入:
java -jar hello.jar(执行)
出现了什么, Hi, Hello World!
我们再来看看jar文件在tomcat中发布,注意:在tomcat中我们就不能再用jar这种格式,而改war格式,它是专门用于web应用的,其实整个过程下来基本上和jar是类似的:
先准备我们要打包的资源。
找到存放tomcat的webapps目录,进到其中,新建一个文件夹,这里命名为hello,再进去新建WEB-INF文件夹,再进去新建 classes文件夹,此时我们也将我们唯一的servlet,HelloWorld.java放到这里,在与classes目录同级下建立一文件 web.xml。Ok,目前我们初步建立了一个简单的web应用。
关于 MANIFEST.MF 写法.
例如我们打包的jar为 Test.jar
Manifest-Version: 1.0
Main-Class: windows.VideoWindow
Class-Path: lib\org.eclipse.swt_3.3.0.v3346.jar lib\org.eclipse.swt.win32.win32.x86_3.3.0.v3346.jar
上面为打包为jar中的包说明文件. 下面这个报错一直出现.
could not find main class. Program will exit
这个错误提示其实不是没有发现main class. 而是jar如果有错误执行不了,就会出现这个错误. 打包完成后, 要先运行 cmd -> java -jar your.jar 确认没有问题即可执行jar. 使用-jar参数后, 系统的Classpath 变量不再起作用. 虚拟机将去MANIFEST.MF中的Class-Path 下找相关的包.
然后才能成功的从: windows.VideoWindow 的main方法进入. 否则没有相关连接包,则会提示找不到main class. 而大家可能还迷糊的找不到北. 明明有main class吗.
如果这个写的不对. 则就会一直报错.
看看上面这个Class-Path: 后面的写法. 空格分开. 绝对不能有分号.切记.
最后必须有换行. 这个也是要注意的. 否则依然提示没有mainclass.
不要因为这个小事情耽误了时间. 其中 lib/ 表示这个jar必须在打包Test.jar所在目录的一个lib子目录中.
运行jar需要命令: java -jar Test.jar
双击也可以, 则使用 javaw 打开.
关于java -classpath a.jar;b.jar; class test.Test 执行时. a.jar;b.jar; 后面都必须有分号. 否则报错. 不要指望不写classpath让系统自己找. 这不是在eclipse里面.必须写上你要使用的类. 否则总会提示您编译出错.
可以用的上的有:
1. Main-Class 指定程序的入口,这样可以直接用java -jar xxx.jar来运行程序。
2. Class-Path 指定jar包的依赖关系,class loader会依据这个路径来搜索class。
我平时用mf文件一般说来都是让jar成为可以直接运行这一目的。虽然目的这么简单,但是每次打包还是很容易出现各种各样的问题让人头痛。mf总是没有被应用,或者是出错了。
首先给出一个简单而标准的例子:
Manifest-Version: 1.0
Main-Class: ui.JFrameMain
Class-Path: jtds-1.2.jar c3p0-0.9.1.2.jar
esri_mo20.jar esri_mo20res.jar jsde83_sdk.jar
解释一下:
Manifest-Version mf文件版本号,这行照抄
Main-Class 包含main函数的类,程序的入口
Class-Path 用到的一些包
分析一下要点:
要点1:每行的“:”(冒号)用来分隔键值对。冒号后边一定要跟一个空格!!!
也就是说务必写为:
Main-Class:(空格)YouClassName
Class-Path:(空格)Class1.Jar
否则JBuilder会报("Manifest.mf": Error reading manifest: java.io.IOException: invalid header field
)这样的错。不再IDE帮助下做的JAR会发现MF没有起到应有的作用。顺便说一下以前我看到JBuilder报另一个个错大概说是什么换行符不对,好像也是由于这个问题引发的。原先总以为是windows里边的回车是由回车,换行2个字符构成而造成的。现在看来好像不是这样,是因为少了冒号后边那个空格。
要点2:Class-Path里边的内容用空格分隔而不是逗号或者分号。(唉。。。我总是下意识的用分号)
也就是说务必写成:
Class-Path:(空格)Class1.jar(空格)Class2.jar(空格)Class3.Jar
要点3:有的文章说MF文件每行不能超过七十多的字符,我的经验是如果在JBuilder里编辑MF超过了也无妨,一般我是尽量一行写完。续行挺麻烦又要以空格开头什么的。我也经常直接用winRar打开jar然后直接编辑里边的mf文件,这是个好方法,很直接了当,缺点就是如果改坏了也不会报错,只是MF有的部分失效了,好像运行时也会说"错误的MF文件版本"。
介绍几个技巧:
技巧1:使用winRar打开jar,双击MF文件,就可以编辑了,编辑完了Ctrl+S保存。特方便。也可以在外边写好一个Manifest.mf,然后直接拖入覆盖以前的。
技巧2:写一个run.bat来运行你的jar。run.bat大体内容如下:
java -jar yours.jar
pause
后边加一个pause就可以让你看到具体哪里出错了,一般来说问题如果出在MF上,那么往往就是哪个包,哪个类没有找到的NoClassDef这种异常。
发表评论
-
java.lang.OutOfMemoryError: Java heap space 解决方法
2012-09-25 14:40 887java.lang.OutOfMemoryError: ... -
单例模式
2012-09-13 17:26 789概念: java中单例模 ... -
设计模式
2012-09-13 17:25 755设计模式主要分三个类型:创建型、结构型和行为型。 其中创建型有 ... -
小数点
2012-08-27 16:46 835保留两位小数{方法一:{ double c=3.154 ... -
计时器2
2012-08-21 13:48 915Timer类是用来执行 ... -
ngnix.conf配置
2012-07-18 09:20 846# 开多少进程 worker_processes 2; ... -
多维数组
2012-07-12 10:32 732java语言中,数组是一种 ... -
取得下一年时间
2012-07-05 16:16 762Calendar cal = Calendar.get ... -
JSP五大内置对象
2012-07-04 16:00 1377一、Request对象方法 ... -
反射机制学习
2012-05-31 10:50 670JAVA语言中的反射机制: 在Java 运行时 环 ... -
读取src下properties配置
2012-05-09 10:42 738try { String path = getClas ... -
ibatis与hibernate的区别
2012-04-25 09:14 771Hibernate简介Hibernate是一个开放源代码的对象 ... -
iBATIS教程之快速入门浅析
2012-04-24 17:01 702iBATIS教程要从iBATIS的概 ... -
tomcat外部启动项目
2012-04-13 15:12 895server.xml <Context pa ... -
防止跨域提交表单
2012-04-11 14:47 855public static boolean validate( ... -
Excel操作 >> 导入
2012-04-09 15:28 1163/** * 導入文件(excel) * @auth ... -
Excel操作 >> 导出
2012-04-09 15:25 1176ExcelBean.java public class Ex ... -
計時器
2012-03-31 17:28 771所有类型的 Java 应用程序一般都需要计划重复执行的任务。企 ... -
根据url读取数据并解析(json)
2012-03-30 16:23 1158/** * @param args * @thro ... -
取URL对应的资源
2012-03-30 15:57 774认识IP、认识URL是进行网络编程的第一步。java.net. ...
相关推荐
生成JAR包是Java项目打包的一种常见方式,它用于将多个.class文件及相关资源文件打包成一个文件,便于程序的分发和部署。JAR文件的全称是Java Archive,本质上是一个ZIP格式的压缩文件,包含了一个清单文件...
3. **设置导出选项**:在弹出的对话框中,选择你需要包含在JAR文件中的Class文件、资源文件等。可以指定一个目标路径和文件名,比如命名为`pet.jar`。 4. **配置Manifest文件**:Manifest文件是JAR文件的一个重要...
12. **总结**:生成JAR包的过程涉及多个步骤,包括创建`.class`文件、编写清单文件、使用`jar`命令进行打包等。为了提高JAR包的运行效率,需要注意优化JAR包的结构和内容,尽可能减少不必要的资源加载。 以上是对...
Eclipse作为一个流行的Java集成开发环境(IDE),提供了方便的工具来生成JAR包。本文将详细介绍如何在Eclipse中生成包含外部依赖的JAR包。 首先,我们来看如何生成不包含外部依赖的普通JAR包。如果一个Java类包含...
将class文件打包成jar文件是Java开发中常见的需求,尤其在使用WebService的SOAP协议时,为了实现远程调用,往往需要将本地的类文件(.class)打包成jar包进行分发。本文将深入探讨这一过程,包括手动压缩和利用...
6. 将生成的 jar 文件和存放引用包的 lib 文件夹放在同一个目录下,最后点击生成的 jar 文件就可以成功运行了。 Eclipse jar 打包的注意事项 在使用 Eclipse 生成 jar 文件时,需要注意以下几点: * 在 manifest ...
3. **替换class文件**:将新生成的class文件替换掉原JAR文件中的旧版本。确保新class文件与旧版本在文件路径和命名上保持一致,以便Java虚拟机能正确识别。 4. **重新打包JAR**:使用`jar cf new-jar-file.jar *`...
### 生成JAR包步骤详解 #### 一、引言 在Java开发中,将项目打包成JAR(Java Archive)文件是一种常见的做法。JAR文件不仅方便部署和分发,还能有效地组织类文件和资源文件。本文将详细介绍两种常用的生成JAR包的...
### Eclipse导出JAR包详解 #### 一、前言 在Java开发过程中,经常会遇到将项目打包成可执行的JAR文件的需求。这不仅便于程序的发布与分发,还能帮助开发者更好地管理项目的依赖关系。Eclipse作为一款广泛使用的...
根据描述,你已经有一个名为"导出excel所需要的jar包"的压缩文件,这通常会包含以下依赖: - poi-ooxml-schemas: 包含OOXML的XML schema定义。 - poi-ooxml:处理.xlsx文件的核心库。 - poi:处理.xls文件的核心库。...
【标题】"poi.jar导入导出jar包"指的是Apache POI项目提供的Java库,主要用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。这个jar包是开发人员在Java环境中进行读写Excel文档时必不可少的工具。 ...
在实际应用中,"jar包差异比较器"的使用流程可能是这样的:首先,开发者选择需要比较的两个jar包,然后工具会生成一个报告,列出所有的差异,包括具体修改的类名和资源文件名。开发者可以根据报告快速定位到变化的...
标题中的“利用bat反编译jar包生成源码jar包”指的是通过批处理脚本(BAT)配合反编译工具,将已有的Java字节码(JAR包)转换为源代码并打包成新的JAR包的过程。这个过程通常用于没有源代码但需要查看或修改JAR包...
首先,我们来看一下"Eclipse查看jar包class文件源码插件"。Eclipse中常用的插件有JD-Eclipse和Decompiler。JD-Eclipse是基于JD-GUI的一个集成版本,它可以直接在Eclipse中显示.jar文件中的源代码。安装步骤如下: 1...
3. 检查结果:生成的新jar包将包含重命名或移动的类,可以替换原有jar包,解决冲突问题。 这个"jar包修改神器"不仅适用于解决冲突,还对模块化开发有帮助。在大型项目中,可能需要合并多个jar包,但又不希望它们的...
以下是生成JAR包及其运行的相关知识点: 1. **JAR命令**: - `jar` 命令是Java SDK自带的一个工具,用于创建、更新和提取JAR文件。 - 参数 `cvf` 分别代表 `c` (create)、`v` (verbose) 和 `f` (file),用于创建...
下面我们将详细探讨这一过程以及如何将生成的Java类反编译为.class文件并打包到.jar文件中。 首先,让我们了解JSP到Servlet的转换过程。JSP文件本质上是HTML文件,其中可以插入Java代码。服务器上的JSP引擎在首次...
本文将详细介绍如何通过Java命令行工具`jar`,将散落的`.class`文件或整个目录下的所有`.class`文件打包成JAR包,并进一步讲解如何生成可执行的JAR包,以及如何测试和创建批处理文件来运行这些JAR包。 #### 基本...
本教程将详细解释如何生成包含MyBatis配置文件的JAR包,并在命令行环境中运行该JAR包来生成Mapper配置。 首先,理解MyBatis的核心组件和配置文件: 1. **mybatis-config.xml**:这是MyBatis的全局配置文件,包含了...
这将执行`jar`目标,生成包含所有依赖的单个jar包。 注意,上述示例假设你的源代码位于`src`目录,依赖的jar在`lib`目录,编译后的class文件存放在`build/classes`,最终的jar文件将被创建在`dist`目录下。根据实际...