从Intellij运行可执行jar的问题

时间:2019-04-02 11:27:03

标签: java intellij-idea

最近我遇到了从Intellij运行可执行jar文件的问题。似乎Intellij无法执行-jar命令。我不确定是否可以在某个地方设置它。我可以从命令行运行jar,而不会出现任何问题。

我希望能够调试jar的Main类。我有一个带有标准JVM调试选项的JAR应用程序调试配置

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

问题本身的堆栈跟踪:

Connected to the target VM, address: '127.0.0.1:58571', transport: 'socket'
    Exception in thread "main" java.lang.ClassNotFoundException: -jar
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    atcom.intellij.rt.execution.CommandLineWrapper.loadMainClassWithCustomLoader(CommandLineWrapper.java:193)
    at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:47)

P.S。 JAR应用程序Deubug配置:

Path to Jar: <my_path_to_jar>
VM Options: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Program arguments: <passed_args>
Working dir: <path_to_my_project>

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您需要在此处执行某种故障排除。 启动应用程序后,您是否知道端口5005是否用于调试? 您可以在检查此端口netstat -aon | findstr 5005的使用情况时运行命令提示符,这将返回ID为ID的进程(如果不存在该ID,则意味着调试缺少某些配置。)

您可以从带有arg-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005的命令提示符下运行jar,然后从IntelliJ的Run-> Attach to process中运行。这将显示端口上运行的进程的列表,选择端口5005上的一个。