个人在Maven工程中运行Java文件时莫名其妙的不能执行,报如下错误
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac/M
ain
Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.Main
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
还弹出对话框,提示如下:
Could not find the main class: com.sun.tools.javac.Main. Program will exit.
检查了工程的classes目录,正常生成,Eclipse里面的Problems的error都解决了,还是不行,运行Test.java输出为空。
在网上搜索了解决方案是新建立一个工程即可。 但是我这个项目,新建立工程再拷贝一些东西过去,特别麻烦。琢磨了半天,将项目工程逻辑删除,再重新导入,运行一个Test.java,输出"hello world!"成功。
当然出现这种情况,也有可能是其他原因引起的。具体问题需要具体排查,反正我就这么解决了。
今天是11月8日
一大早起来解决该问题:由于maven工程与myeclipse工程的差异,在转换成myeclipse工程使用时,需要对maven的POM.xml文件进行显示的配置myeclipse的srouce路径和classes路径。
配置大概如下
<build>
<finalName>appName</finalName>
<sourceDirectory>src/main</sourceDirectory>
<outputDirectory>webapp/WEB-INF/classes</outputDirectory>
<testSourceDirectory>src/test</testSourceDirectory>
<testOutputDirectory>webapp/WEB-INF/classes</testOutputDirectory>
</build>
在遇到多个源目录配置时,可以参考http://duooluu.iteye.com/blog/353883提供的插件