今天同事遇到个问题,发现import package居然报错,但是那个package实际上存在。一般情况某个类有问题或者是该类中的方法有问题,总会在IDE中显示一条红线。但是这次确实是没有问题。我找到该类所在的子模块,使用mvn install。这个错误我之前遇到过,光update project是没有用的,update project主要作用是同步。比如,我在父工程中加入其他第三方插件依赖,有些地方需要它,有的时候,明明已经导入该依赖,可是我却不能用它。这时,只需update project即可。根据整个项目的大小,需要的时间是不同的,如果项目过大,update project的时间可能会过长。

贴贴关于mvn install的错误:

关键信息就是:No compile is provider in this environment.Perhaps you are running on a JRE rather then a JDK

翻译过来的意思是:

在此环境中没有编译器提供程序。也许您运行的是JRE而不是JDK

很多篇博客只讲如何解决,不讲是什么原因。

当然了,开发经验多年的小伙伴们一眼就看出了。直接就知道怎么解决。

在此我要说说JDK和JRE的区别,虽然这个也是老生常谈,但是这回我要结合这个错误,谈点不一样的。

JDK和JRE有如下区别:

相同点:

都可以运行JAVA程序,JDK中包含JRE,JRE本身就是Java运行环境。

不同点:

JDK全称为"JAVA 开发工具包",JRE全称为"JAVA运行环境":

JRE是java runtime environment(java运行环境)的缩写。光有JVM还不能让class文件执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,

里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm合lib合起来就称为jre。所以,当你写完java程序,也就.java文件时,当其编译成.class文件后,你可以 把这个.class文件和jre发给朋友,这样你的朋友就可以运行你写的程序了(jre中有运行.class的java.exe)。

JDK:JDK是java development kit(java开发工具包)的缩写。每个做java开发的人都会先在机器上装一个JDK,那 让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。

JRE和JDK比较可以得出一个结论,就是jdk不需要jre就可以跑起来,因为它包含jre,而jre不需要jdk也能运行,因为其有运行.class的java.exe。这个也是java面试基础常考的题目之一。

关于JAVA编译原理可以参考我的这篇博客:说说Javac

小结:

任何时候都要牢记一个准则,“夯实基础”。荀子说:"不积跬步无以至千里“。不论是生活还是学习都是这么个理。

希望这篇博文,能给大家带来启发和帮助。

记一次Eclipse关于JDK和JRE的问题的更多相关文章

  1. Eclipse添加JDK,JRE切换

    Eclipse添加JDK Window---preferences 切换JDK,JRE

  2. Visual Studio、.net framework、CLR与JDK、JRE、JVM、Eclipse

    .net平台                                        java平台 开发工具                   Visual Studio            ...

  3. JDK与JRE及其在Eclipse中的使用

    转载自:http://blog.csdn.net/gx1058742912/article/details/51033942 JDK与jRE的区别 JDK(java development kit): ...

  4. Java学习2 - JDK和JRE和JVM的区别_JDK的下载安装_环境变量配置

    一 JDK和JRE和JVM的区别 Jdk: Java Development kit - Java 开发工具 JRE: Java Runtime Environment - java运行环境 JVM: ...

  5. Java2_java入门时的一些基本概念的理解(j2ee,j2se,j2me,jdk,sdk,jre,jvm,跨平台)

    什么是SDK呢? Software Develop Kit的简称,顾名思义就是软件开发包.软件开发商实现底层模块,并对其进行类库封装,配置成高级别的开发环境,为程序员上层的程序开发提供支持.譬如Goo ...

  6. 浅谈Eclipse寻找JVM(JRE)的顺序机制(转)

    转自:http://blog.csdn.net/teedry/article/details/6666850 Eclipse也是一个普通的Java程序,因此必须有一个JRE做为运行环境.        ...

  7. eclipse调试jdk源码

    摘要 介绍使用eclipse调试jdk源码 java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码.虽然官方的jdk自带了源码包src.zip,然而在debu ...

  8. eclipse查看jdk源码,及反编译查看

    jdk中的包: dt.jar是关于运行环境的类库,主要是swing的包 tools.jar是关于一些工具的类库 rt.jar包含了jdk的基础类库,也就是你在java doc里面看到的所有的类的cla ...

  9. jdk、jre、jvm的关系

    JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,如C:\Program Files\Java\jdk1.5.x\目录下的JRE.而C:\Program Files\Java\ ...

随机推荐

  1. Java - HashCode源码解析

    Java提高篇(二六)-----hashCode hashCode的作用 要想了解一个方法的内在原理,我们首先需要明白它是干什么的,也就是这个方法的作用.在讲解数组时(java提高篇(十八)----- ...

  2. js文字滚动效果

    function (global) { var logo = document.getElementById('logo'); var text = document.createTextNode(' ...

  3. HDU3001(KB2-J 状态压缩dp)

    Travelling Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. css 给inline和inline-block元素设置margin和padding

    经过简单的测试,行内元素或者行内块元素的maring-left,margin-right,padding-left,padding-right都是可以正常表现的,下面来看一下剩下的margin-top ...

  5. innerHTML在ie9有部分无法添加

    在高版本的浏览器,innerHTML就如正常时候,里面可以套任何字符串,但是在ie9下,innerHTML不能是table ,tr td等标签字符串,解决方法如下: 在table添加一个tr var ...

  6. Android studio Connection failed (dl.google.com)

    公司的网,莫名其妙的不能更新了,却可以下载compile文件... 于是乎FQ,hosts,修改studio.exe.vmoptions文件 然并卵,都特么不行 搞了一天还是不行 这种问题或许可以找到 ...

  7. Android Studio 自动更新失败解决办法

    Check Update一直提示Connection failed. Please check your network connection and try again,开始以为是由于G*W在捣乱, ...

  8. python subprocess pipe 实时输出日志

    * test11.py import time print "1" time.sleep(2) print "1" time.sleep(2) print &q ...

  9. 解决mysql日志显示时间和“Got an error reading communication packets” 问题

    [root@calldb3 data]# tail -f mysql.error :.884160Z to db: 'calldb' user: 'call' host: '172.31.50.220 ...

  10. centos7安装mysql5.7修改设置密码策略

    centos7操作系统在安装mysql5.7社区版之后会有默认密码,通过grep命令在mysqld.log文件中即可找到,如下所示: 标识位置即在初始化安装时mysql的默认密码,然后通过mysql ...