机器学习和生物信息学实验室联盟
标题:
jar包上传到服务器上的那些事
[打印本页]
作者:
wangjingjing
时间:
2015-1-7 20:39
标题:
jar包上传到服务器上的那些事
本帖最后由 wangjingjing 于 2015-1-8 17:05 编辑
作为一个彻头彻尾的菜鸟,最近需要在服务器上跑代码,揪心的事可真不少。
在本地写完代码了,得打包上传到服务器。问题来了,那么多第三方的jar包怎么办?
要么打成 Runnable的jar包吧,每次打的包都好大,上传效率太低了。要是遇上那种bug还有很多的代码,那就够麻烦了。要么打成普通的jar包,不把第三方的包包含进来,然后在profile中(linux系统下)修改classpath的值,这样也是可以的,但是如果第三方的Jar包很多,需要修改的classpath就很多了,也不大方便。
所以,我用的方法是这样的,
1. 第一次打包的时候打成Runnable的Jar包(此时需要指定mainclass),这样把这个工程所需要的jar包都包含进jar包了,比如生成了 a.jar,上传这个jar包到服务器,就可以直接跑了,可以使用命令:
java a.jar
复制代码
(我感觉好像很不方便呀,如果需要同时执行多个class,可是runnable只能指定一个mainclass,这要怎么办?)
2. 把工程下已经编译好的class文件(文件夹也可以)上传到服务器,然后使用如下命令来执行类test:
java -cp .:a.jar test
-cp 即指定classpath为之前打包好的Jar包,这样所需要的class都能在这个jar包中找到了。
test就是要执行的主类
复制代码
这里一定要注意在classpath中要加上前面的 . (表示当前路径,默认 test所在的路径就是当前路径),那么在执行的时候,会先在当前路径下寻找 test.class(可能是已经修改过的,较新的class 文件), 否则会在jar中寻找第一次打包的时候可能已经存在的较老 test.class. (被坑了好久才发现这个问题,所以一定要小心!)
这种方法可以同时执行多个类,也保证了所有的第三方Jar包都能找到。同时,如果在本地修改了其中一个类,那么只需要重新上传这个修改了的类的.class文件就可以了,也很方便。
不知道有没有说错的地方,欢迎指正。
作者:
guojiasheng
时间:
2015-1-17 23:25
菜鸟第二种暂时搞不定~
第一种打包成Runnable “ 如果需要同时执行多个class,可是runnable只能指定一个mainclass,这要怎么办?” 是说一个程序同时要执行多个函数吗?
作者:
wangjingjing
时间:
2015-1-18 16:35
guojiasheng 发表于 2015-1-17 23:25
菜鸟第二种暂时搞不定~
第一种打包成Runnable “ 如果需要同时执行多个class,可是runnable只能指定一 ...
嗯,对,你需要同时执行多个函数。比如,一个模拟的服务端,另一个客户端,这个时候貌似就办不到了。。
第二种方法有什么问题吗?我现在一般都用这种方法跑了,挺方便的。
欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/)
Powered by Discuz! X3.2