您的位置:首页 > 运维架构 > Linux

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

2015-02-05 14:56 926 查看
我自己还是觉得用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包.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: