Web项目做多了,反而对单纯的java项目陌生了,今天我们在开发项目的过程中,碰到一个这样的需求:需要将java项目放到linux系统上跑起来,当然这个javaSE项目是带main方法的。我们知道在IDE里写完JavaSE项目后,运行非常简单,只要本地java环境装好了,右击main方法---->run as-->java application就行,那么放到linux上呢?目前我们想到的有两种方法:一种是打成jar包放到服务器上,用命令java -jar ****.jar执行jar包即可。另外一种也是挺常见的将java项目放到服务器上,然后写一个shell脚本执行。关于方法二,还正在尝试之中。今天我要说的是方法一操作时需要注意的。

打jar包很简单,直接在myeclipse或者eclipse里导出jar包就行。具体做法是:

右击项目------->export---->选择JAR file:

------>next----->:指定导出的jar包具体存放位置即jar包名称:

------>next--->默认:

------>选择要执行的main方法:

----->finesh,这样将JavaSE项目打成jar包就完成了,到此就可以放到服务器上执行java -jar test.jar,就执行指定的main方法了。

至此,如果你写的java项目没有引入第三方的jar包,一点问题都没有,但是一旦你引入了框架呀或者自己公司写的jar包时,问题就悄悄来了,待你执行时就会发现抛出了NoClassDeFined诸如此类的问题,也就是找不到这个类,这时候你也许会奇怪,为啥呀,明明有这个类啊,那是你的错觉,你在IDE里导入了需要的jar包,当然会有了,但问题时你现在执行的这个jar文件放到了服务器上,它里面是否包含了这个jar呢,原来我以为打成jar包时就把引入的jar包一并再次打包,现在想想应该不会吧。呵呵,具体我还没怎么去深究,今天咱们先把这个解决方法说了。

步骤一:在你服务器存放jar包的同级目录下创建一个lib目录,并且将所有需要导入的第三方jar包全放进去,一个也不要剩:

步骤二:在IDE里准备清单文件:MANIFEST.MF,即在项目的目录下,新建一个MANIFEST.MF文件,先不要问为什么,相信我,咱们先解决掉咱们问题后再说:

关于清单文件里的内容:

ManifestMain-Version:版本,1.0

Class-Path:将第三方的jar名都放进去,注意:后面要留一个空格

Main-Class:jar包要执行的main方法,记得写类的全路径,同事:后面要留一个空格。

OK了,清单文件准备完成了,继续下一步操作。

步骤三:重新打jar包,步骤和原来的一样,export---next---...但是有一点区别的是,如下需要使用自己写好的清单文件:

步骤四:jar包打好了,传到你的linux服务器上吧,记得和lib放在同一级目录下,这样执行java -jar test.jar就能顺利执行了。

今天只是说明了其中的一种解决办法,至于原理我想你在写清单文件的时候应该就理解了吧,它会去这个class-path里找到jar包解析了。当然还有其他的办法,目前我知道的这个分享给你们了,咱们一起进步!!!

参考来自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html#3306113

java项目打成jar包时引用了第三方jar,此时我们该如何解决呢的更多相关文章

  1. springboot打jar包将引用的第三方包、配置文件(.properties、.xml)、静态资源打在包外

    1.外置配置文件 Springboot读取核心配置文件(.properties)的外部配置文件调用方式为 jar包当前目录下的/config目录 因此要外置配置文件就在jar所在目录新建config文 ...

  2. 如何在制作jar包时引用第三方jar包

    我用的是Eclipse打包,但在CMD窗口执行的时候报“ActiveMQ.jar中没有主清单属性”错误. 在网上搜了下,这个与MANIFEST.MF文件有关,该文件没有定义MAIN方法所在类的路径,利 ...

  3. java项目打成war包

    1.修改pom.xml下的打包方式 <groupId>com.test</groupId> <artifactId>springboot</artifactI ...

  4. java -jar命令运行jar包时指定外部依赖jar包 linxux or windows

    前尘回顾: setup.bat [chenquan@hostuser tartest]$ cat ../setup.sh javac -encoding UTF-8 -Djava.ext.dirs=. ...

  5. eclipse将引用了第三方jar包的java项目打成jar包

    今天用java开发了一个项目,想要打成jar包,并在linux环境下运行.但是运行时引用的第三方jar包却显示classNotFind错误. 于是查了一下解决办法,在此贴出来,方便以后查阅. 用Ecl ...

  6. Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

    方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目 ...

  7. (转载)Eclipse将引用了第三方jar包的Java项目打包成可执行jar的两种方法

    转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 "MA ...

  8. 将引用了第三方jar包的Java项目打包成jar文件的两种方法

    方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目 ...

  9. Eclipse项目中引用第三方jar包时将项目打包成jar文件的两种方式

    转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFES ...

随机推荐

  1. cocos2d-x 2.1.4学习笔记01:windows平台搭建cocos2d-x开发环境

    cocos2d-x的大致开发流程是,首先使用win32版进行代码编写并完成游戏,然后将代码迁移到对应的开发环境上进行交叉编译完成游戏打包,如iphone上是mac+xcode,android是ecli ...

  2. 真相:中国版BBB用USB连电脑没有盘符的根本原因分析

    很多网友在问:为什么中国版的装完驱动插上板子没有显示端口号和69M的盘符??楼主发现,在开机启动的时候,加载g_multi模块时出现错误提示 invalid argument.         Emb ...

  3. iOS VoiceOver Programming Guide

    VoiceOver是苹果“读屏”技术的名称,属于辅助功能的一部分.VoiceOver可以读出屏幕上的信息,以帮助盲人进行人机交互. 这项技术在苹果的各个系统中都可以看到,OS X,iOS,watchO ...

  4. js广告浮动

    一个广告框在指定区域,有定位属性的父级区域内,一直向右向左移动,如果碰到左右边框,反向,如果碰到上下边距,反向,实现在指定框中浮动的效果. <!doctype html> <html ...

  5. cookie和session可能需要知道的知识

    做Android程序员,了解服务器的知识是相当重要的,比如cookie和session. 首先介绍一点背景知识,我们知道HTTP的连接是无状态的,HTTPS只是增加了安全,有了SSL证书来验证,作为服 ...

  6. WildFly 9.0.2 启用 SSL

    一.最近做个项目是需要在WildFly中启用https,但是由于WildFly的中文文档比较少所以google了一下,先是通过JBOSS的官方文档了解了一下,但是官方文档这块的配置介绍有些不全面.所以 ...

  7. CDT 错误 Cannot run program "gcc"

    Eclipse+CDT 编辑C/C++程序出错误: 出现编译错误: **** Rebuild of configuration Debug for project example **** **** ...

  8. datagrid合并行列--并不能影响序号列内容...(formatter的锅.)

    datagrid合并行列 //datagrid组件. $('#id_dailylist_dg').datagrid({ //url:'datagrid_data.json', columns:[[ { ...

  9. 01_反射_04_反射类的main方法

    [User.java] package com.Higgin.reflect; public class User { public User(){ System.out.println(" ...

  10. 【制作镜像Win*】文件准备

    mkdir /var/image-createcd /var/image-create/ 在物理机上: wget http://10.254.3.75/images/libvirt/libvirt.x ...