项目打成jar包在命令行或linux终端执行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包.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值