IDEA报错:Process ‘command ‘./Java/jdk1.8.0_131/bin/java.exe‘‘ finished with non-zero exit value 1 解决!

时间:2024-03-20 21:02:21

IDEA的下gradle项目运行test下的main()方法报错:

Exception in thread “main” java.lang.NoClassDefFoundError: com/xxxx/xxxx/xxxx/xxxx
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader 1. r u n ( U R L C l a s s L o a d e r . j a v a : 362 ) a t j a v a . s e c u r i t y . A c c e s s C o n t r o l l e r . d o P r i v i l e g e d ( N a t i v e M e t h o d ) a t j a v a . n e t . U R L C l a s s L o a d e r . f i n d C l a s s ( U R L C l a s s L o a d e r . j a v a : 361 ) a t j a v a . l a n g . C l a s s L o a d e r . l o a d C l a s s ( C l a s s L o a d e r . j a v a : 424 ) a t s u n . m i s c . L a u n c h e r 1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher 1.run(URLClassLoader.java:362)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassLoader.findClass(URLClassLoader.java:361)atjava.lang.ClassLoader.loadClass(ClassLoader.java:424)atsun.misc.LauncherAppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at fks_graphql_runner.xxxx.getFilesBySchemaName(xxxx.java:50)
at fks_graphql_runner.xxxx.main(xxxx.java:24)
Caused by: java.lang.ClassNotFoundException: com.xxxx.xxxx.xxxx.xxxx
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
… 16 more

FAILURE: Build failed with an exception.

Caused by: java.lang.ClassNotFoundException: com.xxxx.xxxx.xxxx.xxxx

Execution failed for task ‘:xxxx.main()’.

Process ‘command ‘C:/Program Files/Java/jdk1.8.0_131/bin/java.exe’’ finished with non-zero exit value 1

在路径下能找到该类,经过断点调试发现在Class.forName()报错。

解决方案一:

打开File->Settings->Build,Execution,Deployment->Build Tools->Gradle,将Run tests using改成InterlliJ IDEA。

IDEA报错:Process ‘command ‘./Java/jdk1.8.0_131/bin/java.exe‘‘ finished with non-zero exit value 1 解决!

解决方案二:

点击要运行的类的Edit Configurations,将Shorten command line选项改成JAR manifest。

IDEA报错:Process ‘command ‘./Java/jdk1.8.0_131/bin/java.exe‘‘ finished with non-zero exit value 1 解决!

类路径太长,或者您有许多VM参数,则无法启动该程序。原因是大多数操作系统都有命令行长度限制。在这种情况下,IntelliJ IDEA将尝试缩短类路径。

Shorten command line(缩短命令行)四个参数:

None: 这是默认选项。IDE不会缩短长类路径。如果命令行超出了操作系统限制,则IDEA将无法运行您的应用程序,但是工具提示将建议配置缩短器。

JAR Manifest: IDE通过临时classpath.jar传递长类路径。原始类路径在MANIFEST.MF中定义为classpath.jar中的类路径属性。

User-local default: 旧版属性。对于在此EAP之前创建的项目,将自动设置此选项。IDE将根据在idea / workspace.xml文件,属性:“ dynamic.classpath”和idea.config.path / options / options.xml文件,属性:“ idea”中设置的属性值来配置此设置。 dynamic.classpath.jar”。

classpath file: IDE将把长的类路径写入文本文件。

【官方文档】:https://blog.jetbrains.com/idea/2017/10/intellij-idea-2017-3-eap-configurable-command-line-shortener-and-more/

内心:第一次遇到的时候测试用IDEA运行就行,第二次再遇到弄了一整天,明明报的是NoClassDefFoundError,跟缩短命令行有什么关系????原本是认为依赖的scope问题,修改后还是无效。最后随便改改,居然瞎猫碰到死耗子。