项目打成jar包在命令行或linux终端执行java工程

  • Post author:
  • Post category:java




我自己还是觉得用eclipse第三方插件fatjar直接把java项目打包成jar,上传到服务器直接运行(赋执行权限)即可,参考上一篇关于插件的文章。下边的方法(网上的一些相关资料和做法)有点麻烦,而且容易出错。


1. 先在eclipse下把项目源码导出成jar包,可以选中项目右键->export->jar 。。一步一步到底,最后变成1.jar,再把额外的一些jar包,如lucene、mysql-connecor的一些jar包也打包成一个2.jar(最后使用起来方便),上传到服务器(命令scp -r -Pxx端口号 username@xxx /….)接着输入密码,注意端口号前P要大写,斜杆后世你要把上传的jar包放的路径;


2.除此之外,也要把你的源码的主类文件(含有main函数,如test.java)也上传到服务器上(摆放的位置随意,记得就好);

3.执行。先要执行javac,生成.class文件。格式如下:

javac -cp /home/username/../1.jar:/home.username/../2.jar test.java

4. 对于生成的class文件。执行

java -cp /home/username/../1.jar:/home.username/../2.jar:test

注意:如果class文件有包名字,如package.test,应该是:

java -cp /home/username/../1.jar:/home.username/../2.jar:package.test


最后的冒号不能少~~~



将java工程打成jar包,但第三方jar包并没有包含在包中,当在命令行中运行jar包时,出现类找不到的异常,


在网上看到解决办法是将第三方jar包放到JDK的扩展类文件夹中(%JAVA_HOME%/jre/lib/ext),


再运行,还是出现同样的错误,我的java工程要调用webservice,webservice工程中也用到了相同的jar包,


在启动服务器的时候,不能正确部署webservice,应该是webservice工程中的jar包和JDK中的jar包有了冲突。


通过不断地试验,终于成功了!


1、新建文件夹test位于D盘;


2、将用到的所有第三方jar包放在文件夹lib下,再将lib放在test下;


3、导出的java工程jar包a.jar也放在test下;


4、修改工程jar包META-INF文件夹下的MANIFEST.MF配置文件:


Manifest-Version: 1.0

Main-Class: cn.golaxy.yqpt.client.main.GatherMain

Class-Path: lib/soapmonitor-1.5.jar

lib/spring-aop.jar


写明main函数的包路径(注意:冒号后加一个空格)!


在class-path后写上引用到的所有jar包(注意:要分行写,并不是说一行写一个jar包,只要保证这一行不要太长就好,否则会出现Exception in thread “main” java.io.IOException: line too long

at java.util.jar.Attributes.read(Attributes.java:356)

at java.util.jar.Manifest.read(Manifest.java:167)

at java.util.jar.Manifest.<init>(Manifest.java:52)

at java.util.jar.JarFile.getManifest(JarFile.java:158)


异常,换行时前面加两个空格,最后还有一个回车)!


5、将修改好的MANIFEST.MF文件覆盖掉原来的;


6、在命令行下执行jar包:java -jar a.jar。


够详细的了吧,希望能帮到你O(∩_∩)O哈哈~





在linux 服务器上运行JAVA工程需注意。




1: 在linux 上: /etc/profile  设置classpath 配置正确的jar 路径。




2:  把本地JAVA工程做成一个jar包。如:1.jar




3:   把JAVA工程的包含的jar包 和步骤2中的jar包 上传到制定目录。 如2.jar




运行



java -classpath /usr/javalib/1.jar:/usr/javalib/2.jar  java类




例如:如果在/etc/profile中设置


export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/home/caojh/lib/commons-lang-2.2.jar:/home/caojh/lib/junit.jar:







可以省去 -classpath .






注意:eclipse 中的工程需单独做成一个jar包.