Maven找不到java编译器的问题

当使用mvn package打包项目的时候,抛出下面这个错误:

1 [ERROR] Unable to locate the Javac Compiler in:
2   D:\jdk\..\lib\tools.jar
3 Please ensure you are using JDK 1.4 or above and
4 not a JRE (the com.sun.tools.javac.Main class is required).
5 In most cases you can change the location of your Java
6 installation by setting the JAVA_HOME environment variable.

他妈的找不到编译器,环境变量也没问题,为什么提示的路径是那样的?接着我到IntelliJ IDEA 里去设置SDK,在classpath里没有lib目录下的tools.jar和其它jar包,只有jre/lib目录下的一些包,搞不懂为什么会这样子,然后手动把tools.jar和dt.jar加入classpath,重新mvn package还是不行。

他妈的都怒了。最后只好先运行一个包含main方法的类,估计是IDEA自己去设置了加载路径,main方法执行后,就可以打包了,他们的也不知道是怎么回事。

所以最终的解决方法是:

先运行包含main方法的类,或者整个项目编译一下,然后再mvn package就成功了。

----更新----

他妈的可能是编译的插件版本问题,使用的是maven3,但是他妈的编译插件的版本是2.3.2的,当时从其它地方直接copy的没注意到。

时间: 2024-12-28 01:20:07

Maven找不到java编译器的问题的相关文章

关于MAVEN找不到JDK的那点事

自从SUN被Oracle收购以后,JDK就由Oracle来提供了. 在新版本之中,如果你下载JDK安装以后,又选择了JRE安装(当然,现在JRE直接叫做Java了),那么,恭喜你,在 C:\windows\System32\ 这个文件夹下, java.exe以及 javaw.exe 都有了,但是没有javac,如果使用Eclipse +  Maven来构建项目,则会报错 ,反正类似于 你的运行环境是JRE,不是JDK,请用JDK来替换.... 个人遇到这个问题,查找了老半天,Java_Home,

Eclipse出现了一个找不到java\jdk1.6.0_23\bin\..\jre\bin\client\jvm.dll的错误

昨天打开Eclipse出现了一个找不到java\jdk1.6.0_23\bin\..\jre\bin\client\jvm.dll的错误,不知道所以,然后去这个路径下,发jvm.dll是存在的 然后怀疑是jre和jdk版本冲突的问题,因为机子装了不是一个系统,有32的也是有64的,而且前两天也出现在chrome下找不到java支持的情况,让我装chromejre的插件,丫丫的java的破东西 然后在网上搜问题的解决方案,很少,有两个是让从新安装jdk,然后从装jdk和jre无果,问题依然存在,然

java编译器不匹配问题(java compiler level does not match the version of the installed java project facet)

问题:项目经常copy过来,经常会报说Java编译器不匹配 解决方法:找到项目所在的目录,在.settings子目录里面,用文本编辑器打开org.eclipse.wst.common.project.facet.core.xml

警惕Java编译器中那些“蜜糖”陷阱

一.前言 随着Java编译器不断地向前发展,它为程序员们提供了越来越多的“蜜糖”(compiler suger),极大地方便了程序的开发,例如,foreach的增强模式,自动拆箱与装箱以及字符串的连接操作...... 这些"蜜糖"带给我们很多的便利,但是也存在着一些陷阱. 二.自动拆装箱陷阱 首先我们来看看大家最为熟悉的自动拆装箱(boxing),boxing可以自动帮我们完成基本类型和基本类型包裹器之间的转换. 具体使用方法可以参考有名的Java Gossip(http://open

java编译器

编译: .java变成.class        前端编译   Sun javac Eclipse ECJ .class变成机器码      运行期编译 等HostSpot VM c1,c2 .java变成机器码  静态提前编译 GCJ ====================== 上述是三种不同的编译方式 java编译器,码迷,mamicode.com

java编译器知识

代码编译器: 代码: 编译就是讲一种代码编译成计算机可以理解的指令. ===================================================================================================== java的重排序:(JVM通过偏序关系保证重排序的指令符合业务需求) 代码首先是来表示一个处理数据的过程,这个过程就是通过计算机来执行,但是计算机现在的CPU是采取流水线进行多线程的执行,这样计算机的代码必选也是可以多线程进行

如何用Maven创建一个普通Java项目

一下内容包括:用Maven创建一个普通Java项目,并把该项目转成IDEA项目,导入到IDEA,最后把这个项目打包成一个jar文件. 有时候运行mvn命令失败,重复运行几次就OK了,无解. 1.用Maven模板创建一个项目 打开控制台,进入到想要创建项目的目录,然后运行如下命令,参数自由填写: 1 mvn archetype:generate -DgroupId={project-packaging} 2 -DartifactId={project-name} 3 -DarchetypeArti

Java编译器、JVM、解释器

Java虚拟机(JVM)是可运行Java代码的假想计算机.只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行.本文首先简要介绍从Java文件的编译到最终执行的过程,随后对JVM规格描述作一说明. 一.Java源文件的编译.下载 .解释和执行  Java应用程序的开发周期包括编译.下载 .解释和执行几个部分.Java编译程序将Java源程序翻译为JVM可执行的字节码.这一编译过程同C/C++ 的编译有些不同.当C编译器编译生成一个对象的代码时,

IDEA13中配置struts错误:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter +找不到java程序包 解决办法

问题一:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter解决办法 1.确保所有struts2所需要的包都导进去了(红色标记的),如图: 2.将外部lib下的包都复制到WEB-INFO下: 当再次启动tomcat的时候就可以了.IDEA会把src目录下的所有非*.java文件复制到WEB-INF/classes目录下,所以Tomcat说找不到所需要的类. 相同问题也可参见如下:(具体见原