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. 【转】三次握手与accept()函数

    1. 客户端发送SYN给服务器 2. 服务器发送SYN+ACK给客户端 3. 客户端发送ACK给服务器 4. 连接建立,调用accept()函数获取连接

  2. Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  3. 玩转Android之数据库框架ActiveAndroid的使用

    ActiveAndroid是一个开源的数据库框架,使我们在Android中使用数据库变得更为简单,今天我们就来看看这个数据库框架的使用. 1.引入ActiveAndroid 首先创建我们自己的项目,在 ...

  4. air2调用本地exe的文章

    流传了两种配置app.xml的方法,分别是: <supportedProfiles>extendedDesktop</supportedProfiles>  <suppo ...

  5. iOS之NSNotificationCenter通知中心使用事项

    其实这里的通知和之前说到的KVO功能很想,也是用于监听操作的,但是和KVO不同的是,KVO只用来监听属性值的变化,这个发送监听的操作是系统控制的,我们控制不了,我们只能控制监听操作,类似于Androi ...

  6. MySQL INSERT DELAYED

    INSERT DELAYED 语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_nam ...

  7. eclipse 注释模板设置

    方法注释模板 /** * @title ${enclosing_method} * @description ${todo} * ${tags} ${return_type} * @Date ${da ...

  8. 让你一分钟认识电子身份验证系统EID

    什么是EID eID是英文"Electronic Identity"的英文简称,中文名为"电子身份证"或"网络电子身份证",由公安部第三研究 ...

  9. java Spring bean作用域

    1. Singleton作用域 当一个bean的作用域为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则 ...

  10. java编写一个端口扫描器

    好久没写java了,学的时候,也没学习网络编程这一块,无意中看到了一本书,于是小小复习一下java,写个端口扫描器,玩玩吧,网上这种小公具有的是,就是自己无聊写着玩玩. 源代码如下: 共两个类,比较简 ...