文章来源:http://routeadd-net202.114.6.yulei.blog.chinaunix.net/uid-28765492-id-3984003.html
利用eclipse的Remote Java Application功能,在windows平台调试运行在linux环境下的java程序。
二、实验条件
1、安装好java环境+eclipse的windows主机一台
2、安装好java环境的linux主机一台(或运行在windows主机上的虚拟机)
三、实验步骤
1、在windows上,打开eclipse,建立HelloWord工程,类名为demo1.app
2、编译生成app.class
3、将app.class拷贝到linux系统下,如保存为/root/eclipse/workspace/HelloWorld/demo1/app.class
4、在linux上,输入指令: # java -agentlib:jdwp=transport=dt_socket,address=8888,server=y,suspend=y -jar /root/eclipse/workspace/HelloWorld/demo1.app
控制台输出:Listening for transport dt_socket at address: 8888
5、在windows上,eclipse中右键工程名,打开Debug Configuration,并配置如下
记得配置好apply再按debug
按下debug,
此时便可以step into/step over/resume来调试linux上的java程序了,这里按下resume退出程序。
可以看到linux控制台成功打印出”Hello World!“:
四、实验扩展
1、若需要调试的应用程序很庞大(包含很多.class),可以利用jar将所有的class打包
打包指令: jar cvf AllClass.jar main.class 1.class 2.class 3.class ... n.class
然后双击打开AllClass.jar, 找到META-INF/MANIFEST.MF,在里面添加一行: Main-Class: main ,其中main是你程序的入口类
Manifest-Version: 1.0
Main-Class: main
Created-By: 1.6.0_27 (Sun Microsystems Inc.)
若不执行这一步骤,运行程序java -jar AllClass.jar 时会出现"找不到主类的错误"
2、利用eclipse的ftp功能,让eclipse主动上传工程中所有class文件,并利用ssh功能在linux中正确打包
这步骤主要是参考CDT里的Remote Debug原理,有待以后研究。
五、参考文章
1、 Debugging Java Applications Remotely
2、 How to fix Failed to load Main-Class manifest attribute from jar