2015-04-28 121 views
3

我有一台运行Java的远程服务器,我有SSH访问权限。 我正在写一个应用程序在本地机器上,用maven构建它。 是否可以将IDE Itellij IDEA设置为远程运行我的项目?这个想法是:构建jar,将其复制到服务器,并调试进程(或类似的东西)。Intellij IDEA远程调试Java控制台程序

这将是很好的你分享我需要设置的设置。

回答

1

我认为这是可能的,我可以用我用来部署我的应用程序的本地服务器做这样的事情。而且由于您可以访问服务器,所以它也适用于您。

你需要在IntelliJ中做的事情是创建一个远程配置。为此,请打开IntelliJ并在运行按钮(左侧)旁边,应该有配置,用向下箭头指定。点击该箭头并点击编辑配置。一个新的窗口应该打开。点击左上角的+标志,并选择远程。应该出现一个新的窗口。我们现在需要设置服务器使用的主机和端口调试(如果您使用的是tomcat,通常是8000;在tomcat中,您可以通过使用文本编辑器打开catalina.bat文件并查找它为JPDA_ADDRESS属性,它允许您更改端口)。为您的配置命名并按应用

之后,您需要以调试模式运行您的配置。您需要从配置列表中选择它并按调试按钮位于运行按钮的右侧。

更多细节在这里:

http://blog.trifork.com/2014/07/14/how-to-remotely-debug-application-running-on-tomcat-from-within-intellij-idea/comment-page-1/

http://eclipse.org/jetty/documentation/current/debugging-with-intellij.html

http://www.javaranch.com/journal/200408/DebuggingServer-sideCode.html

我希望这有助于。

+0

我可能误解了一些东西,但为什么我需要Tomcat的运行一个简单的服务器端的“Hello World”控制台程序。我也没有发现任何提及到远程服务器的ssh连接。 –

+0

我用tomcat作为示例服务器。我的Tomcat是通过SSH连接的服务器。但是,我告诉你的应用程序适用于部署在该服务器上的应用程序,例如网络档案(.war文件)。我不确定你所要求的.jar文件可以做什么(或者至少,我从来没有遇到过这种情况)。无论哪种方式,这是您连接到远程服务器以便从IntelliJ调试应用程序的方式。 – SSJVegito

8

这是我通常用来调试我的远程应用程序。

  1. 在服务器上运行调试模式

    这可以加入这一行,当你运行你的应用服务器

    -Xdebug -Xrunjdwp:transport=dt_socket,server=n,suspend=n,address=9999 
    

    为JDK以上1。4,你可以使用这个

    -agentlib:jdwp=transport=dt_socket,server=n,suspend=n,address=9999 
    

    之后,运行应用程序服务器

  2. SSH隧道

    我不是100%肯定,你可以,如果访问到您的应用程序的端口直接你正在使用SSH连接(嗯,也许有一种方法;))。所以,首先我们需要通过运行这个命令来暴露我们在第一步设置的调试端口。

    ssh -f [email protected] -L 9999:personal-server.com:9999 -N 
    
  3. 设置IDE

    您可以按照步骤中@SSJVegito说,这主要是调试器指向端口9999打开在你的想法的调试配置,那么盘旋值更改为9999。然后,快乐的调试:d debug configuration

+0

我能够得到它的工作,但像线程转储这样的事情非常缓慢,并冻结应用程序,而我等待他们完成。冻结超过一秒钟的应用程序对我来说是不可接受的。任何想法我能做些什么来解决它? – Barteks2x