前言时,程序在本地环境运行良好,但在线环境出现各种错误。笔者除了看日志也没有更好的办法。无意间发现idea可以实现在线调试,真是作者这样的辣鸡程序员的福音啊!该方法可以实现war包的远程部署和调试。jar包可以通过其他方式实现。本文暂不赘述。如果真的要这样部署jar包,可以把jar包改成war包。该方法也是可行的。;本文要求读者有一定的linux基础;作者能力有限,理解不足,错误多多。请指正,谢谢。环境准备linux服务器(本文使用某品牌的云主机)安装tomcat(注意版本要与本地tomcat版本一致)idea2018.3(低版本也可以,但官方文档说只有旗舰版支持此功能)xshell(用于连接linux服务器并进行相应设置)注意事项因为使用的是云主机,所以需要在相应的云主机安全组上开启相应的端口(本文使用8080、1099、5050端口);在remotedeployment之前最好清理上一代笔者按照我的文章,难免会有意想不到的情况,可以在文章后面提出,大家一起讨论。毕竟弄了几天才成功,期间问题不断;执行步骤idea中设置FTP(用于将本地文件传输到指定的linux主机文件夹)tools->Delpoyment->configuration输入云主机的IP地址,点击TestConnection按钮,完成后进行下一步连接成功,这里测试成功后点击Autodetect自动识别根路径。将本地文件夹和linux服务器上的部署位置做一个映射(功能待定)。idea编译设置File->projectStructure,并添加Artifacts供后续部署。如果不能从Archive中的Modules中选择,先添加WebApplication:Exploded,然后添加webapplication:archive(作者能力有限,这里应该有更合理的方法,但我没找到)输出目录:可以直接使用自动生成地址,创建ManifestFile文件(点击创建),然后选择指定的启动类。ideaDebugsettings接下来我们开始设置远程调试相关的配置,其中会设计三个端口,即8080、1099、5050,这三个端口我们会在本节最后进行讲解。这个时候选择上一步生成的mytatis-xml:war包(这里是上传war包到服务器,warexplodee是上传war的解压文件,本来两种方法都可以,但是第二种方法不知道为什么本地一直在调试,不行,就用第一个。方法名根据不同的项目名不同,不一定要和作者完全一样。)下图中的路径是自动生成的,不要更改,否则会导致界面无法访问之后。这时图中的路径也自动改变了,不需要手动修改。点击Debug,将端口改为5050,然后复制中间箭头所指的一段代码-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5050我们需要将这段代码写入catalinaoftomcat.sh文件端口说明:8080:tomcat工作端口1099:Jmx工作端口5050:远程调试端口云主机tomcat设置编辑tomcat/bin/catalina.sh脚本,添加如下内容CATALINA_OPTS="-agentlib:jdwp=传输=dt_socket,服务器=y,暂停=n,地址=5050-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port=1099-Dcom.sun.management.jmxremote.rmi.port=1099-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false-Djava.rmi.server.hostname=xx.xx.xx.xx”第一句和我们复制的内容有关上面,jmx相关端口设置为1099,hostname改为云主机实际IP地址;修改catalina.sh脚本后,我们对应的启动命令为:./catalina.shstart;关闭命令是:./catalina.sh停止,并且不使用start.sh和shutdowan.sh,而是使用./catalina.shstart命令来启动tomcat。如果之前启动过,请先关闭tomcat。使用lsof-i:8080/5050/1099端口应该被同一个程序占用来监控。至此,服务器已经全部准备就绪!IdeaRemoteDeployment在部署之前,最好清理一下生成的文件,然后点击debug。如果出现下午最下方的字样,则远程部署成功。这时候在代码中设置断点,就可以顺利调试了。不足的是可以顺利进入断点,但是线上会出现三个类似的同名文件。我不知道造成这种情况的原因。如果有人知道,请告诉我,非常感谢。参考Idea官方帮助文档:https://www.jetbrains.com/hel...
