如何把java程序生成jar运行文件.pdf
- 格式:pdf
- 大小:414.53 KB
- 文档页数:4
SpringBootjava-jar命令⾏启动原理解析在spring boot⾥,很吸引⼈的⼀个特性是可以直接把应⽤打包成为⼀个jar/war,然后这个jar/war是可以直接启动的,⽽不需要另外配置⼀个Web Server。
那么spring boot如何启动的呢?今天我们就来⼀起探究⼀下它的原理。
⾸先我们来创建⼀个基本的spring boot⼯程来帮助我们分析,本次spring boot版本为 2.2.5.RELEASE。
// SpringBootDemo.java@SpringBootApplicationpublic class SpringBootDemo {public static void main(String[] args) {SpringApplication.run(SpringBootDemo.class);}}下⾯是pom依赖:<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><finalName>springboot-demo</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>创建完⼯程后,执⾏maven的打包命令,会⽣成两个jar⽂件:springboot-demo.jarspringboot-demo.jar.original其中springboot-demo.jar.original是默认的maven-jar-plugin⽣成的包。
JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet 和应用程序的程序开发环境。
它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。
自从Java 推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。
JDK包含的基本组件包括:·javac –编译器,将源程序转成字节码·jar –打包工具,将相关的类文件打包成一个文件·javadoc –文档生成器,从源码注释中提取文档·jdb – debugger,查错工具JDK中还包括完整的JRE(Java Runtime Environment,Java运行环境),也被称为private runtime。
包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL库。
JDK中还包括各种例子程序,用以展示Java API中的各部分。
从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。
JDK的另一个显著特点是随着Java (J2EE、J2SE 以及J2ME)版本的升级而升级。
但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。
JDK一般有三种版本:SE(J2SE),standard edition,标准版,是我们通常用的一个版本EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序,ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序Java开发工具(JDK)是许多Java专家最初使用的开发环境。
Eclipse中将项目导出jar包,以及转化成exe文件2011-06-27 09:24一、导出jar文件:如果你的程序开发已经接近尾声了,正准备将其生成桌面可执行文件却不知道该如何操作时,你只要按照以下步骤实行即可:选中你的项目---然后右击弹出选项列表---选择Export---Java---jarfile---next---browser(选择jar的存放路径)---next---next(不管太多继续下一步)---browser(选择你程序的主类--OK)---finish;查看你存放jar的目录,是否已经生成了?如果没有你一定没按照步骤操作.二、运行jar文件:生成的jar文件你可以双击运行它,但默认情况下会以压缩包的方式打开,如果这不是你想要的结果,请右击文件---打开方式---选择java(TM)platform来运行.我想这时你应该看到了你的软件界面.先恭喜你了..三、连同第三方文件一并导出至jar文件:如果你在程序开发的时候用到了第三方提供的API或者其它附属资源,在你导出生成jar文件时你必须将第三方的文件一并导出,不然你的程序运行将达不到你想要的结果.你可以利用Fat jar插件生成jar,Fat jar 的下载地址:/projects/fjep/下载的文件是net.sf.fjep.fatjar_0.0.31.zip,解压缩后你会看到plugins文件夹中的net.sf.fjep.fatjar_0.0.31.jar文件(简称Fat jar).插件安装:把Fat jar文件拷贝到你的eclipse目录下的plugins中..重新启动你的eclipse平台,然后查看Window---preferences,弹出的窗口中有Fat jar preferences这一项则说明你已经安装成功了,没有这一项则未安装成功,需要多做如下几步操作:到你的eclipse目录下的configuration---org.eclipse.update,并删除platform.xml文件,然后重新启动eclipse.查看Window---preferences,你会发现Fat jar preferences这一项.恭喜你安装成功了.(未成功可直接去墙撞死)..用Fat jar打包:右击你的项目,选项列表中有Build Fat jar这一项,选择它,弹出的窗口你会觉得特别亲切,一目了然使用很方便,点击Browser(Main-Class选择你的主类)---next---finish(勾选你需要一起打包的资源,默认为全部勾选).瞧,jar文件就生成在你的工程项目中了.运行它,一切顺利,否则就是你编程的问题了..另:如果你不想用Fat jar来打包,有一个更快捷的方法可以帮助你,但也是有缺陷的.步骤:将你需要用到的附属文件放到你的jre安装目录下的\lib\ext目录中(安装JDK的同时也安装了jre),再通过(一、导出jar文件)的方式生成jar.这样就可以了.它有个致命的缺点就是,这样的jar文件只能在你本机可以使用,如果要在别的机子上运行必需在\lib\ext放置同样的附属资源.四、将jar文件转换成exe可执行文件:exe文件使用方便,而且还可以提高源码及资源的安全性,但同时也失去了java的初衷--跨平台性.如果你坚持要转换成exe文件,请按以下方式进行:利用exe4j这个软件转换jar文件为exe文件,exe4j下载地址:/download/exe4j/files.html,(目前最新版本为4.2)有的需要安装,有的只要解压缩即可用.我一般用安装的exe4j软件,它们没有什么区别,因此找个可以用的就行了.下载安装后,运行它,接着按步骤操作:1.运行后直接点Next.2.选择第二项“JAR in EXE mode”,之后点击Next.3.在General---Short name of your application框中输入你的应用程序的名字(随便即可),在Directories---Output directory框中输入生成exe后的保存路径,然后Next.4.在Excutable name框中输入将要生成的exe的名字,“Icon File”是应用程序显示的小图标,不选也行.继续Next.5.必须先配置Class-Path,点击+号添加文件,即jar文件,如果有用到其它资源需要把资源一起添加进去.6.General --- Main Class选择主类.7.Java Version --- Minimum version(低版本必须填写),Maximum version(高版本可以为空),如果都有填写那么高版本的值必须大于低版本的值.8.勾选Allow JREs with a beta version number以及Only allow JDKs and no JREs.接着Next.到这一步你可以直接finish.这样就把jar转换成exe文件了.你可以点击Click Here to Start the Application 按钮测试生成的文件.到这里就完毕了,对你有没有帮助呢?我想多少解决一些人的烦恼是有的..注意:exe4j是需要注册码激活的,没激活的情况下也可以用,但是在运行生成的exe文件时,会先弹出一个对话框提示该程序是由未注册的软件创建的,提示您激活。
一、先将一个java 程序或项目打包成jar 文件。
1.先在Myeclipses 下添加一个插件 fat jar (1)先把压缩文件解压,将net.sf.fjep.fatjar_0.0.31.jar 放置在你的Myeclipse 的安装目录下。
此为我的Myeclipse 安装目录路径。
如图所示(2)关闭你的Myeclipse ,重新启动。
(3)右键点击你的项目工程名,查看是否有一个 +buile fat jar 选项。
若有,表明完成上面两部,点击next点击finish,将在你指定位置,生成一个可执行jar文件。
查看是否正常。
可能出现的问题:1.所引入的数据库jar包,导入不正确,无法连接数据库。
2.项目中可能添加的图片,在Jar文件中不能正常显示。
解决第二个问题。
如图所示我的项目内容1.在src目录下新建一个Folder 目录文件,将你之前的图片放置进去。
2.修改代码部分:将之前的代码修改为如上所示写法。
整体修改完毕后,重新对项目进行打包操作。
并做测试检查二、将一个可运行的jar文件做成exe文件。
1.先安装exe4j软件。
2.运行软件。
注册窗体进行软件注册用户名,公司名称,随便填写。
注册完毕,回到主窗体。
Next直接点Next第二步我们选择“JAR in EXE mode” 就是选择我们已经有制作好的jar文件。
我的是“桌面\project\”. NEXT由于我的演示程序是图形的,所以选第一个,如果你的程序是控制台的,则选择第二个,Executable name写你将要生成的.exe文件的名字,Icon File可以选择生成文件的图标。
第5步,先别管上面的,先在下面单击绿色的“+”号。
在弹出的窗口中点Archive,然后找到起初已经做好的PetDemo_fat.jar文件,"OK"后返回。
在下面的Class Path里就出现jar文件路径后,再在上面Main Class栏内点击找到main所在的类。
把XML转成PDF的有效工具:FOP格式对象处理器(FOP) 是一个源码开放的Java API,可以把XML数据转换成PDF格式,同样的,也可以转成其他相关的格式,象TXT, SVG, AWT, MIF, 和PS. 该软件是在Apache XML项目下开发的,可以免费使用。
这篇文章展示了如何开始使用FOP。
FOP的主要优点是它转换XML数据到PDF格式报告的性能,使用的了格式化树结构。
我们提供的绝大多数的例子将会集中展示这个非凡的转换,但也会把XML数据转成Java AWT格式.这篇文章的面向于精通XML和XSLT的开发者的。
要获取更多的关于XML的信息,可以到。
安装FOP 可以从FOP 发布目录上面下载。
下载文件是一个gzip 文件包,它包括两个发行包。
其中fop-0.20.4-src 发行包包含源代码,使用它可以自己用Ant 进行编译。
fop-0.20.4-bin 发行包包含了运行部分, 里面没有源代码和Java文档。
把源码包解压到你选择的一个目录下。
你会得到程序解压生成的fop-0.20.4主目录和一系列子目录:build, conf, docs, hyph, lib 和src.• build 包含最新的FOP运行文件fop.jar, 这个文件应该被放在应用程序的CLASSPATH 中。
• conf 包含了确定的配置文件,这个我们将在后面进行讨论。
• docs 包含了各种各样的例子,文档,和一些图形图片。
• hyph 包含了不同语言的连字符信息。
• lib 包含了所有的外部.jar 文件,这些文件对于FOP自己的运行是必需的。
他们包括Avalon, Batik, Xalan, 和Xerces。
由于这篇文章• 是着重介绍FOP的, 我们不会深入讨论这些API。
只需要知道FOP使用这些API就够了。
在配置的时候我们需要把这些库放到应用程序的CLASSPATH 中。
• src 包含了所有源代码。
第一章J ava概览Java是一种理想的面向对象的网络编程语言。
它的诞生为IT 产业带来了一次变革,也是软件的一次革命。
Java程序设计是一个巨大而迅速发展的领域,有人把Java称作是网络上的“世界语”。
本章将简要介绍Java语言的发展历史、特点、Java程序的基本结构以及开发Java程序的环境和基本方法。
1.1 Java语言发展历史1.1.1 Java 语言产生的背景1991年,SUN MicroSystem公司的Jame Gosling、Bill Joe等人的研究小组针对消费电子产品开发应用程序,由于消费电子产品种类繁多,各类产品乃至同一类产品所采用的处理芯片和操作系统也不相同,就出现了编程语言的选择和跨平台的问题。
当时最流行的编程语言是C和C++语言,但对于消费电子产品而言并不适用,安全性也存在问题。
于是该研究小组就着手设计和开发出一种称之为Oak(即一种橡树的名字)语言。
由于Oak在商业上并未获得成功,当时也就没有引起人们的注意。
直到1994年下半年,随着Internet的迅猛发展,环球信息网WWW的快速增长,Sun Microsystems公司发现Oak语言所具有的跨平台、面向对象、高安全性等特点非常适合于互联网的需要,于是就改进了该语言的设计且命名为“Java”,并于1995年正式向IT业界推出。
Java一出现,立即引起人们的关注,使得它逐渐成为Internet上受欢迎的开发与编程语言。
当年就被美国的著名杂志PC Magazine评为年度十大优秀科技产品之一(计算机类就此一项入选)。
1.1.2 互联网成就了Java互联网的出现使得计算模式由单机时代进入了网络时代,网络计算模式的一个特点是计算机系统的异构性,即在互联网中连接的计算机硬件体系结构和各计算机所使用的操作系统不全是一样的,例如硬件可能是SPARC、INTEL或其他体系的,操作系统可能是UNIX、Linux、windows或其他的操作系统。
Jocky混淆JAVA代码(保护你的JAVA项目)一、前言1.1 什么是Jocky?我们知道,Java是一种跨平台的编程语言,其源码(.java文件)被编译成与平台无关的字节码(.class文件),然后在运行期动态链接。
这样,编译后的类文件中将包含有符号表,从而使得Java程序很容易被反编译。
相信每一个Java开发人员,都曾经用过诸如Jad之类的反编译器,对Java的class 文件进行反编译,从而观察程序的结构与实现细节。
如此一来,对于那些需要严格进行知识产权保护的Java应用,如何有效的保护客户的商业投资,是开发人员经常需要面对的问题。
于是就出现了Java混淆编译器,它的作用是打乱class文件中的符号信息,从而使反向工程变得非常困难。
Jocky就是这样一款优秀的Java混淆编译器。
1.2 为什么需要Jocky?目前业界有不少商业的甚或是开源的混淆编译器,但它们普遍存在一些这样或者那样的问题。
一般而言,现有的混淆器都是对编译好的class文件进行混淆,这样就需要编译和混淆两个步骤。
而事实上,并不是所有的符号都需要混淆。
如果你开发的是一个类库,或者某些类需要动态装载,那些公共API(或者说:那些被publish出来的API)就必须保留符号不变,只有这样,别人才能使用你的类库。
现有的混淆器提供了GUI或脚本的方式来对那些需要保留的符号名称进行配置,但如果程序较大时,配置工作将变得很复杂,而程序一旦修改,配置工作又要重新进行。
某些混淆器能够调整字节码的顺序,使反编译更加困难,但笔者经历过混淆之后的程序运行出错的情况。
而Jocky与其它混淆编译器最大的不同之处在于:它是直接从源码上做文章,也就是说编译过程本身就是一个混淆过程。
1.3 Jocky是如何工作的?Jocky混淆编译器是在Sun JDK中提供的Java编译器(javac)的基础上完成的,修改了其中的代码生成过程,对编译器生成的中间代码进行混淆,最后再生成class文件,这样编译和混淆只需要一个步骤就可以完成。
前言:我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同。
其实将java程序打包成exe也需要这个可执行jar文件。
准备:eclipse、exe4j(网上有软件和帐号下载)第一步,将java项目打包成可执行jar文件,首先看一下我的java project结构,Main.java 是程序入口类,里面有main函数,config目录是些配置文件,lib是用到的第三方类库开始打包,Simulate(Java项目)-鼠标右键-Export弹出窗口,选择“JAR file”,点击“Next”取消勾选“config”和“lib”目录,以及eclipse生成的项目配置文件“.classpath”和“.project”,点击“Next”一切默认,点击“Next”在弹出窗口中,选择我们自己创建的MANIFEST.MF文件,点击“Finish”我的MANIFEST.MF文件内容为:Manifest-Version: 1.0Main-Class: bing.MainClass-Path: . lib/ojdbc14.jar lib/poi-2.5.1.jar lib/jbcl.jarlib/JTattoo.jar lib/liquidlnf.jarCreated-By: IceWee通过指定“Main-Class”来达到可执行jar文件的目的。
其实我们最终是将项目打包成exe,Class-Path可以不指定,在打包exe的时候还要指定classpath的。
第二步,将项目打包成exe,这里要明确一点,并不是把所有的文件都打包成一个exe,资源文件是不能包进去的,往下看↓首先,在任意目录创建一个文件夹,最好命名和项目名相同,我在F盘创建了一个“Simulate”文件夹,之后将所有的资源文件以及我们生成的可执行jar文件(我的Simulate.jar)都拷贝到这个文件夹里,config目录和lib目录,如果你怕执行该程序的机器上没安装jre,那么你需要将自己机器上的jre目录也拷贝进来,我安装的jre5,最后的目录结构:打开exe4j,跳过欢迎,直接点击左侧导航的第二项,因为我们已经提前将java项目打包成可执行jar文件了在弹出窗口,选择“JAR in EXE mode”,点击“Next”在新窗口中,为我们的应用取个名称,之后选择exe生成目录(我的F:\Simulate),点击“Next”为我们要生成的exe取名,如果想生成自定义图标,那么选择你的ico文件,如果你不想在一台电脑上运行多个你的程序,你可以勾选“Allow only a single...”,点击“Next”点击绿色“+”,设置程序运行的Class Path先选择我们自己的可执行jar文件(我的Simulate.jar),点击OK我们的Simulate.jar就加到Class Path下了之后点击General中的Main Class选择按钮,在弹出窗口中,exe4j会自动搜索当前Class Path下的全部jar中包含main方法的类,并列出,因为当前我只选择了自己项目的jar,而我的项目中只有Main.jar包含了main方法,所以一目了然,直接选择它点击“OK”,程序入口类就设置完成了Main Class设置完成后,依次将所有需要的第三方类库加到Class Path下,方法同添加“Simulate.jar”一样,点击“Next”输入Java最小Jre版本号,即低于这个版本的Jre无法运行该程序,接着点击“Advanced Options”-“Search sequence”,设置一下我们的JRE,之前说过,如果客户机上没装Jre咋办?,没关系我们捆绑一个进去点击绿色“+”来选择捆绑的JRE位置在弹出对话框中选择“Directiony”,之后选择JRE的文件夹,注意:这个JRE目录是我们将本机的JRE目录拷贝到当前exe生成目录下的,我的目录是F:\Simulate\jre5,下图程序使用的是相对目录,点击OK,完成JRE的捆绑操作JRE捆绑完毕,点击“Next”默认,点击“Next”默认,点击“Next”默认,点击“Next”exe生成中OK,完成,点击“Exit”即可看看成果如何吧!我们的可执行jar以及第三方jar总共还不到5M,可jre5目录就50多M,如果目标机器上有JRE环境就可以把它删掉了,lib目录是第三方jar文件,现已打包到exe中了,所以它也没有存在的理由了,那么最小配置就剩下了“Simulate.exe”和“config”目录了!。
编写java我用java编译helloworld.java生成.class文件,但每次想运行文件,悬赏分:20 - 解决时间:2007-6-9 15:35都要用java helloworld,不生成点击运行的exe文件,我要如何做永久生成点击运行的文件,具体步骤提问者:xs54168 - 一级最佳答案说简单一点//建一个类Test.java//再一个文本文件main.txt//main.txt中写入main-class:<空格> Test <加一个空行>//dos 到当前目录//执行jar cvfm mm.jar *.*//将生成可执行文件mm.jar 双双击运行--------------------------------------------------------有问题再看看下边的吧首先列表一下环境:D:\abc\myFrame.class(这个myFrame.class 就是我要运行的程序,当然里面必须包含有main方法啦,有一点还要申明:这个myFrame.class 里是没有打包的,也就是没有pachage 语句进行包申明)好了,开始做事吧在D:\abc 下面建立一个文件名字可以是任意的,什么阿猫,阿狗都没问题,而且有没有扩展名,也是没关系的,但你总不至于是exe 、jar 什么的吧?那你也太专牛角尖了吧,比如名字为:ddd.jjj 或fff 都没问题,我就给这个文件取名:xx.x好了现在的任务就是在你刚建立的文件里写点东西。
在里面写上:main-class:myFrame现在呢,就有N多需要注意的或不需要注意的地方了:1.main-class: 这些字呢,大小写是不区别的,但你不要给我把“-”给丢了!2.myFrame 千万不要写成myFrame.class ,而且myFrame 大小写敏感的!3.“main-class:myFrame” 这一行必须是单独一行的,而且这行不能是最后一行,文件最后留个空行,也许你什么都干得出来,你也可以不用空行,你却写上一些&U&()*^^&*%%*&^(^) 系统也懒得管你!4.最重要的,最容易忽略的,就是在main-class: 的后面必须有大于1的个数的空格,如:main-class: xx.x好了现在就开始用jar了首先打开ms-dos(开始里的运行输入cmd 回车)进入到D:\abc下面(cd d:\abc 回车)然后输入:jar cvfm mm.jar xx.x myFrame.class如: D:\abc\>jar cvfm mm.jar xx.x myFrame.class然后回车,应该就ok了!当然这个命令也可以有多种样式的写法,如:jar cvfm mm.jar xx.x *jar cvfm mm.jar xx.x *.*jar cvfm mm.jar xx.x *.class需要注意的地方是:xx.x 这个文件必须所有的要被包含的文件的前面,换句话就是必须紧跟在你要建立的jar文件名的后面,比如我这里就是mm.jar还有就是如过xx.x这个文件有扩展名就必须写上扩展名,没有就不写整行命令里面可以变动顺序的就只有你的那些要包含的程序文件(xx.x 不包含在内,它不是你的应用程序的一部分),比如你的应用程序要用到几个类(a1.class a2.class a3.class ) 命令可以这样:jar cvfm mm.jar xx.x a1.class a2.class a3.classjar cvfm mm.jar xx.x a1.class a3.class a2.classjar cvfm mm.jar xx.x a2.class a1.class a3.class......或者方便点:jar cvfm mm.jar xx.x *.class还有:cvfm 你照抄就好了不好改什么上面讲的都是没有用package 包机制的其实用包的程序也变化不大要注意的地方:比如文件位置为:D:\abc\nn\myFrame.class(myFrame.java里面开头一句是: package nn;看清楚上面我写的文件位置)你只要把nn\myFrame 看成是上面讲的myFrame 就一样了在D:\abc\>下运行jar cvfm ee.jar xx.x nn注意:1.是在abc下运行,不是在nn下!2.xx.x 文件是在abc下面,而不是在nn下面3.xx.x里面的main-class:myFrame 要换成main-class:nn/myFrame或main-class:nn.myFrame4.记得也要在main-class:........的后面行有空行或有内容的行(anything will ok)关于Java如何生成安装文件给用户的问题?悬赏分:10 - 解决时间:2007-1-13 11:41众所周知java需要JDK等运行环境才能允许?现在我用JBuilder做完了一个桌面C/S模式的应用程序只能用JBuilder运行...我如何不用再给用户去装JDK什么的给用户的时候用户只要直接点击下一步下一步就可以完成软件的安装并正常使用呢?提问者:yangxin114 - 一级最佳答案将Java应用程序本地编译为EXE的几种方法(推荐使用JOVE和JET)1. 从获得一个TowerJ编译器,该编译器可以将你的CLASS文件编译成EXE文件。
idea打包java项目生成jar 原理-概述说明以及解释1.引言1.1 概述在Java开发中,项目的打包是必不可少的环节。
打包后的项目可以方便地部署和传输,使得程序在不同的环境中能够运行。
而JAR(Java Archive)文件则是一种常见的打包格式,它将Java项目的所有源代码、资源文件和依赖库等打包在一起,并且可以被Java虚拟机(JVM)识别和执行。
JAR打包对于Java项目的部署和运行起到了至关重要的作用。
在打包过程中,所有的源代码、配置文件、第三方库以及其他所需的资源文件都会被打包成一个可执行的JAR文件。
这个JAR文件可以被轻松地传输、备份和部署到其他环境中。
了解JAR打包的原理对于Java开发人员来说是非常重要的。
它可以帮助我们更好地理解项目的结构和组成,并且能够正确地配置和优化JAR 文件,以满足项目的需求和性能要求。
另外,掌握JAR打包的原理还有助于我们更好地理解Java的类加载机制,从而能够更好地调试和优化项目的运行效率。
本文将从概念和背景开始,介绍Java项目打包成JAR的原理。
我们将探讨JAR文件的组成和结构,以及JAR打包过程中的一些关键步骤和技巧。
最后,我们将总结JAR打包的重要性,并强调了解JAR打包原理的好处。
通过阅读本文,希望读者能够对Java项目的打包有更深入的了解,并能够在实际开发中灵活应用JAR打包技术。
1.2文章结构文章结构部分的内容主要是对本篇长文的章节和内容进行概括和介绍。
以下是文章结构部分的内容:1.2 文章结构本文主要围绕着"idea打包Java项目生成JAR"的原理展开讨论,旨在帮助读者了解Java项目打包成JAR文件的概念、背景和原理。
为了使读者更好地理解,本文按照以下章节进行组织和阐述。
第一部分是引言部分,包括概述、文章结构和目的。
在本部分,我们将对整篇文章进行简要回顾,并明确文章的目的和意义,以便读者能够更好地理解和把握文章内容的整体框架。
在Eclipse中将Java项目打包为jar方法一:如果自己的java project中需要引用额外的jar包作为资源文件,那么需要自己自定义配置文件MANIFEST.MF ,内容示例如下:Manifest-Version: 1.0Class-Path: lib\crimson.jar lib\jbcl.jar lib\junit.jarlib\log4j-1.2.13.jar lib\mysql-connector-java-3.1.13-bin.jarMain-Class: src.YourMainClassName其中的Class-Paht就指定了外来jar包的位置。
请注意假设我们的项目打包后为project.jar,那么按照上面的定义,应该在 project.jar的同层目录下建立一个lib文件夹,并将相关的jar包放在里面。
否则将会出现Exception in thread "main" ng.NoClassDefFoundError的错误。
最后介绍一下使用Eclipse制作jar包的过程吧:1. 首先在Eclipse中打开项目,右键点击项目,选择“Export”;2. 选择Java/JAR file,Next;3. Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间;这里有几个选项:∙Export generated class files and resources 表示只导出生成的.class 文件和其他资源文件∙Export all output folders for checked projects 表示导出选中项目的所有文件夹∙Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了∙Export refactorings for checked projects 把一些重构的信息文件也包含进去在Select the export destination中选择导出的jar的路径,Next4. 下一页可以选择是否导出那些含有警告warning或者错误errors的*.class 文件。
java打包jar成exe并动态绑定jre再打包成安装注:以下所有步骤的前提是,把jar文件,ico图示(pngImage文件夹),第三方jar 包(lib活页夹),jre活页夹,放到同一个活页夹中。
本例放在exe4j Install4j Inno setup活页夹下,如图0如图0首先,我们选用exe4j把jar执行文件转成exe文件exe4j.exe下载地址: /download/exe4j/files.html 程序安装不在赘述:它要求系统有1.5版本以上的JDK,点Download在线下载,如果你的机器上有JDK,点Locate找到你机器上已安装的JDK目录下/bin/java.exe就可以进行安装了。
下面就使用exe4j转换jar为exe的过程详细说明一下:第1步,默认即可。
直接下一步第2步,如果已经有制作好的jar檔,则下面一个"JAR in EXE"。
对于打包jar檔,在eclipse中右击项目选导出即可,不会制作jar檔可以给我留言如图1第3步,上面是项目名称,可随便填写,下面一个写出你想要将打包后的exe文件输出的目录:如图2第4步,由于我的演示程序是图形的,所以选第一个,如果你的程序是控制台的,则选择第二个,Executable name 写你将要生成的exe檔的名字,Icon File可以选择生成文件的图示如图3第5步,首先,单击绿色的"+"号,在弹出的窗口中点Archive,然后找到起初已经做好的jar檔,如图4,"OK"后返回,在下面的Class Path里就出现jar文件路径后,再在上面Main Class栏内点击找到main所在的类,如图5,这一步即算完成:如图4如图5第6步,一般的应该程序都要带第三方jar檔,同步骤5一样即可,结果如图6.第7步,你系统的JRE版本,上面填个1.5,下面不填也行,如图7:如图7当然,这样配置的程序只能在安装有JRE的机器上执行,发布时总要考虑的问题就是用户是否有能力在自己机器上安装JRE,总不能发布一个程序还要用户自己安装个JRE吧,下面我就介绍如何将JDK环境变量动态打包到exe 中,在这里单击advanced options(图7中有,如图8),选择search sequence。
如何把JAVA程序做成Windows服务,并开机运行怎么把jar文件做成系统服务,比较多的解决方案是使用wrapper-windows 这个软件包。
这个软件包的强大之处是能把jre环境也给打进去,这个服务可以正常运行在根本没有jre环境即就没有安装JDK的机器上。
1 下载wrapper-windows-x86-32-3.2.3版本,并解压。
里面包含 bin, conf ,doc, jdoc lib, logs, src 7个文件夹。
2 新建一个文件夹如命名为myWindowServ,(存放自己服务用的)在此文件夹下建立 lib bin 、conf 、logs、 application 5个子文件夹。
3 将 wrapper-windows\src\bin 下的App.bat.inInstallApp-NT.bat.inPauseApp-NT.bat.inResumeApp-NT.bat.inStartApp-NT.bat.inStopApp-NT.bat.inUninstallApp-NT.bat.in复制到bin目录下,并将后缀为.in的文件全部重命名,去掉.in。
例如: App.bat.in重命名为App.bat,并将wrapper-windows\bin下的wrapper.exe也复制到bin目录下。
4 将wrapper-windows\conf 下的文件复制到myWindowServ\conf目录下。
5 将wrapper-windows\log 下的文件复制到myWindowServ\logs目录下。
6 将 wrapper-windows\lib 下的文件复制到myWindowServ\lib 目录下。
7 将需要安装成服务的java程序打包成jar文件(例如上面的打包文件 myjar.jar)放到myWindowServ\application下。
8 配置新文件夹conf目录下的wrapper.conf文件,可以配置运行环境,执行程序,堆内存大小,服务名称等属性信息。
iText简介iText是一个开放源码的Java类库,可以用来方便地生成PDF文件。
大家通过访问/project/showfiles.php?group_id=15255&release_id=167948下载最新版本的类库,下载完成之后会得到一个.jar包,把这个包加入JDK的classpath即可使用。
如果生成的PDF文件中需要出现中文、日文、韩文字符,则还需要通过访问/downloads/iTextAsian.jar下载iTextAsian.jar包。
关于iText类库的使用,/iText/tutorial/index.html有比较详细的教程。
该教程从入门开始,比较系统地介绍了在PDF文件中放入文字、图片、表格等的方法和技巧。
读完这片教程,大致就可以做一些从简单到复杂的PDF文件了。
不过,试图通过教程解决在生成PDF文件过程中遇到的所有困难无疑是一种奢望。
所以,阅读iText的api文档显得非常重要。
读者在下载类库的同时,也可以下载类库的文档。
如何利用iText在java程序中生成PDF报表以下是上述教程中一个最简单的例子,这个例子刻画了通过iText生成PDF文件的一般程序框架。
读者只需要在document.open();和document.close();两条语句中间加入自己希望放在PDF文件中的内容即可。
该例子只在PDF文件中加了“Hello World“一行文字。
Document document = new Document();try{PdfWriter.getInstance(document, new FileOutputStream ("Chap0101.pdf"));document.open();document.add(new Paragraph("Hello World"));}catch(DocumentException de){System.err.println(de.getMessage());}catch(IOException ioe){System.err.println(ioe.getMessage());}document.close();由以上的例子可见,程序的框架十分清楚明了。
java打jar包,引⽤其他.jar⽂件⼤家都知道⼀个java应⽤项⽬可以打包成⼀个jar,当然你必须指定⼀个拥有main函数的main class作为你这个jar包的程序⼊⼝。
具体的⽅法是修改jar包内⽬录META-INF下的MANIFEST.MF⽂件。
⽐如有个叫做test.jar的jar包,⾥⾯有⼀个拥有main函数的main class:test.someClassName我们就只要在MANIFEST.MF⾥⾯添加如下⼀句话:Main-Class: test.someClassName然后我们可以在控制台⾥输⼊java -jar test.jar即可以运⾏这个jar。
但是我们这个项⽬需要引⽤其他第三⽅的jar包,在eclipse⾥⾯以项⽬jar包的形式引⽤了这个叫做some.jar的包,当时放在项⽬的lib⼦⽬录下,最后项⽬打包时把这个some.jar也打进来了,但是⽤java -jar执⾏这个test.jar的时候报找不到Class异常,原因就是jar引⽤不到放在⾃⼰内部的jar包。
那怎么办?运⾏时将其加⼊classpath的⽅式⾏不⾏?就是在运⾏jar的同时加⼊classpath参数:java -classpath some.jar -jar test.jar这种⽅式应该能解决问题吧,试⼀下,还是不⾏。
查了下资料,原来使⽤java -jar 命令运⾏jar包时classpath参数将会失效,所以,这种⽅式也不⾏。
那该怎么引⽤其他的jar包呢,答案还是在这个⽬录META-INF下的MANIFEST.MF⽂件中。
jar包引⽤其他jar包的信息必须在这个⽂件中声明。
我们在MANIFEST.MF中添加如下代码:Class-Path: lib/some.jarlib是和test.jar同⽬录的⼀个⼦⽬录,test.jar要引⽤的some.jar包就在这⾥⾯。
然后测试运⾏,⼀切正常!如果有多个jar包需要引⽤的情况:Class-Path: lib/some.jar lib/some2.jar每个单独的jar⽤空格隔开就可以了。
如何把java代码转换成smali代码1、概述Smali是Android系统中Dalvik虚拟机指令语⾔,在apk逆向过程中有许多⼯具可以把smali代码转化成java代码。
但是在学习Smali语法的过程中,有时候需要进⾏java代码和smali代码的对照,如果可以把java代码转换成smali代码,学习起来岂不是很⽅便。
于是⽹上搜了⼀把,很失望,都是各种转smali为java的⼯具。
后来想了想,java变成smali不就是写android程序—>dex—>smali的过程嘛,然⽽java代码编译完是class⽂件,如何变成dex⽂件呢?后来在⼀本书中找到了答案,记录如下。
2、java代码转smali代码把java代码转成smali代码共需要以下三个步骤1、编译java代码为class⽂件javac smaliTest.java这个⽐较简单,会⽣成smaliTest.class⽂件2、把class⽂件转成dex⽂件我们知道apk包⾥java代码最后⽣成的是class.dex⽂件,把class转化成dex⽂件就需要⽤到android SDK提供的⼀个⼯具dx,该jar包位于android-sdk\build-tools\23.0.1\lib,找到该包后执⾏以下命令java -jar dx.jar --dex --output=smaliTest.dex smaliTest.class3、把dex转化成smali⽂件这时候会使⽤到另外⼀个⼯具baksmali,该⼯具位于android-sdk\platform-tools\,找到该包后执⾏以下命令java -jar baksmali.jar smaliTest.dexOK,完成,此时会⽣成⼀个out⽬录,在out⽬录下的smaliTest.smali就是我们要看到的smali代码了3、⽰例程序java代码如下:public class smaliTest {public static void main(String[] args){System.out.println("hello smali");}}smali代码如下.class LsmaliTest;.super Ljava/lang/Object;.source "smaliTest.java"# direct methods.method constructor <init>()V.registers 1.prologue.line 3invoke-direct {p0}, Ljava/lang/Object;-><init>()Vreturn-void.end method.method public static main([Ljava/lang/String;)V.registers 3.parameter.prologue.line 5sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;const-string v1, "hello smali"invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V.line 6return-void.end method4、遇到的问题我的android环境是在windows下搭建的,jdk版本是1.8,在windows下执⾏第⼆步时出现如下错误UNEXPECTED TOP-LEVEL EXCEPTION:ng.RuntimeException: Exception parsing classesat mand.dexer.Main.processClass(Main.java:752)at mand.dexer.Main.processFileBytes(Main.java:718)at mand.dexer.Main.access$1200(Main.java:85)at mand.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)at mand.dexer.Main.processOne(Main.java:672)at mand.dexer.Main.processAllFiles(Main.java:574)at mand.dexer.Main.runMonoDex(Main.java:311)at mand.dexer.Main.run(Main.java:277)at mand.dexer.Main.main(Main.java:245)at mand.Main.main(Main.java:106)Caused by: com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)at mand.dexer.Main.parseClass(Main.java:764)at mand.dexer.Main.access$1500(Main.java:85)at mand.dexer.Main$ClassParserTask.call(Main.java:1684)at mand.dexer.Main.processClass(Main.java:749)... 11 more1 error; aborting原因不明,⼤概是jdk版本不对,然后把baksmali.jar和dx.jar两个包拷贝到ubuntu上,执⾏上述三个步骤,运⾏成功,ubuntu上安装的jdk版本是1.7。
第40章 PDF 组件iText·895·第40章 PDF 组件iText本章将学习Java 的PDF 开源框架iText 。
通过实际的编程例子来学习如何生成pdf 文档,包括设置pdf 属性、在文档中显示格式化文本、显示图表、显示图像等。
完成本章的学习后,可以运用这些基本知识将数据转化成pdf 文件。
40.1 下载iText 组件iText 组件是著名的开放源码的站点sourceforge 一个项目,是用于生成PDF 文档的一个Java 类库。
通过iText 不仅可以生成pdf 或rtf 的文档,而且可以将XML 、Html 文件转化为pdf 文件。
iText 的官方网址是/iText/,如图40.1所示。
图40.1 iText 官方主页在项目主页/projects/itext/中单击“Download ”链接,下载最新版本的iText 类库。
下载完成之后会得到一个iText-2.1.2u.jar 包,运行程序时把这个包加入类路径中即可。
如果生成的PDF 文件中需要出现中文、日文、韩文字符,则还需要下载iTextAsian.jar 包,运行时也将其导入到类路径中。
第8篇 工具篇·896·40.2 输出pdf 的基本步骤pdf 文档输出有一个基本的框架。
首先看下面这个程序,它用iText 生成一个简单的pdf 文档,代码如下:代码40.1 FirstPDF.java package com.helloweenvsfei.itext;import java.io.FileOutputStream;import com.lowagie.text.Document;import com.lowagie.text.PageSize;import com.lowagie.text.Paragraph;import com.lowagie.text.pdf.PdfWriter;public class FirstPDF {public static void main(String[] args) {// 创建文档对象,A4纸大小Document document = new Document(PageSize.A4);try {// 输出为E:\itext.pdf 文件PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("E:\\itext.pdf "));// 打开文档document.open();// 在pdf 文件中写入文字document.add(new Paragraph("Hello World, Hello iText")); // 关闭文档document.close();} catch (Exception e) {e.printStackTrace();}}}该程序运行后,将在E 盘的根目录下生成一个itext.pdf 文件,该pdf 文件打开后,效果如图40.2所示。