最近我遇到了从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>
谢谢。
答案 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上的一个。