Workspace defines a VM that does not contain a valid jre/lib/rt.jar: C:\Program Files\Java\jre7

Maven编译时两则信息 (Workspace以及default classpath container)

博客分类:

使用Maven一年有余,却总是被两则不起眼的编译信息困扰,终想查明,这两则信息如下:

Java代码  

  1. [INFO] Using Eclipse Workspace: D:\maven\workspace
  2. [WARNING] Workspace defines a VM that does not contain a valid jre/lib/rt.jar: C:\Program Files\Java\jre7
  3. [INFO] Adding default classpath container: org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6

始终搞不懂为何出现这两则信息,上午终于搞懂,其实一切还是从编译时自动转换了JRE说起。 
每次编译完Maven项目,其在Eclipse中Jre System Library总是会变成JavaSE-1.6,而不是自己设置的JRE,遂尝试在Google下寻找答案,找到了两个URL如下 
How to make Maven use Eclipse workspace default JRE? 
http://stackoverflow.com/questions/12322202/how-to-make-maven-use-eclipse-workspace-default-jre 
大名鼎鼎的stackoverflow,还有一则是在maven官网上找到的,链接如下 
The JDK is being used is different than expected 
http://maven.apache.org/plugins/maven-eclipse-plugin/trouble-shooting/jdk-being-used-is-different-than-expected.html

于是慢慢尝试如何消除掉这两则看似正常的不正常INFO/Waring,分两步 
1:在stackoverflow查到Eclipse的JRE指向可能存在问题,遂检查之,发现JRE_HOME指向的是JRE目录,改成JDK目录 
 
2:将maven的编译plugin的与机器的JDK版本对应,比如我在项目中写的1.6,而机器安装的是JDK1.7

Java代码  

  1. <plugin>
  2. <artifactId>maven-compiler-plugin</artifactId>
  3. <version>2.3.2</version>
  4. <configuration>
  5. <source>1.6</source>
  6. <target>1.6</target>
  7. <encoding>UTF-8</encoding>
  8. </configuration>
  9. </plugin>

设置后编译出现如下信息

Java代码  

  1. [INFO] Using Eclipse Workspace: D:\maven\workspace
  2. [INFO] Adding default classpath container: org.eclipse.jdt.launching.JRE_CONTAINER
时间: 2024-08-10 14:39:50

Workspace defines a VM that does not contain a valid jre/lib/rt.jar: C:\Program Files\Java\jre7的相关文章

install-file -Dfile=J:\project01\workspace\service\lib\javapns-jdk16-163.jar -DgroupId=org.json -Dar

今天在开发项目的时候发现了一个问题,所以通过博客来记录起来! 为了以后在问题的解决方面能得到借鉴! 问题的现象是这样的: 这样会报错的,pom.xml文件他在编译,检查他的文件语法的时候是需要参考库中的相关jar的,由于上面的是需要依赖javapns-jdk16-163.jar而这个jar是存在于lib目录下 而不是存在于maven的库中,所以会报错了!现在既然这倒了错误的来源我们就来一起解决他吧. 既然像上面的那样缺省了jar包再maven中,那么我们就把他加到那个里面去就可以了. 这样以后就

Java之getProperty中都有什么key?

最近在做一个小工具,之前的工具虽然能检测网址是否合法,能判断能否连接.但是还不足够,后面会另外写一篇关于工具改进的文章,能输出下载资源的名称,因为url本身会跳转到对应的下载资源,我需要核对这些东西下载是否正确. 工具本身写得巧妙,将地址复制进txt文件.我自己在看源码之前在想着实现思路. bat控制编译,数据从txt读取,唯一让我想不明白的是为什么无论我放到哪里,他都能读取到txt文件的位置,这是我想不到的地方,但是看了源码之后就恍然大悟了.其实使用了System.getProperty("u

Java之打印当前虚拟机的所有环境属性的变量和值

import java.util.*; public class SystemInfo {     public static void main(String[] args)     {         Properties  sp = System.getProperties();         Enumeration e = sp.propertyNames();         while(e.hasMoreElements())         {                St

IDEA Maven项目 编译的问题

IDEA中,点击项目的maven插件的 compile: 出现: [INFO] ------------------------------------------------------------------------[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project j360-deliver: Compi

【spring】aop切面通知,日志处理

1.spring的切面编程 概念原理可以看这里:http://blog.csdn.net/moreevan/article/details/11977115 2.所需要的jar包 maven引入jar包(aspectj+aopalliance+cglib+spring):另外还有log日志jar包 <properties> <spring.version>4.1.6.RELEASE</spring.version> <aspectj.version>1.8.

从零开始学OpenDaylight之使用Archetype构建项目

本文源自https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Startup_Project_Archetype Part1 一.环境信息: Windows 10 + maven3.3.9 + JDK1.8,详细信息如下: <properties> <property name="java.runtime.name" value="Java(TM) SE Runtime Envir

【code block】局部代码块+构造代码块+静态代码块

1.局部代码块 位置:位于类的方法中 表示方法:{} 作用:控制变量的生命周期,减少内存消耗 demo: public class LocalCode { public static void main(String [] args){ int y = 10; { int x = 20; System.out.println(x); } System.out.println(y);//运行到此时x变量已被垃圾收集 } } 2.构造代码块 位置:位于类中 表示方法:{} 作用:用于给每个对象进行初

Java System Properties

未命名 java.runtime.name=Java(TM) SE Runtime Environmentsun.boot.library.path=D:\Program Files\Java\jdk1.6.0_31\jre\binjava.vm.version=0.2-b02-internal, 19.0-b04-internaljava.vm.vendor=Sun Microsystems Inc.java.vendor.url=http://java.sun.com/path.separa

Java核心知识点-ClassLoader详解

ClassLoader ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象. 1.1 几个相关概念ClassLoader负责载入系统的所有Resources(Class,文件,来自网络的字节流等),通过ClassLoader从而将资源载入JVM 每个class都有一个reference,指向自己的ClassLoader.Class.getClassLoader() array的Cl