项目 打成jar包 在命令行或者linux服务器上下执行java工程


大家也可以关注我的微信公众号bluefish_ios查看更多更新的一些技术文章分享。



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


 一直觉得自己学技术太水了,学一遍忘一遍。这个好像会做,上次解决了,这次遇到还是得去google,索性写下来(虽然是google出来的),按照自己能看懂的方式写下来,方便自己。
   在ubuntu下的eclipse引入了lucene的一些jar包(如lucene-core,mysql-connector等),连接了数据库,准备为40w条记录做了索引。可老大说要部署到服务器上去。。。直接面对黑乎乎的ter终端执行刚写好的项目,我可傻眼了,让我这水水的菜鸟情何以堪。没办法,google去。。。找了一大堆blog,折腾了近乎一下午,终于能在服务器上跑起来,内牛满面啊,水到何时才是个尽头啊~~~
   
   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.(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包.

你可能感兴趣的:(linux)