当前位置: 首页 > 知识库问答 >
问题:

Maven的执法者没有检测到jdk 1.7

巫马心水
2023-03-14

我使用maven enforcer插件只强制执行jdk 1.7(我使用的是java.nio.file)。出于某种原因,maven enforcer插件无法检测JDK1.7。

λ ~/ java -version
java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
λ ~/ javac -version
javac 1.7.0_13
λ ~/ mvn --version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: /usr/local/Cellar/maven/3.0.5/libexec
Java version: 1.7.0_13, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.7.5", arch: "x86_64", family: "mac"

这是我pom.xml的密码-

   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-enforcer-plugin</artifactId>
      <executions>
        <execution>
          <id>enforce-versions</id>
          <goals>
            <goal>enforce</goal>
          </goals>
          <configuration>
            <rules>
              <requireJavaVersion>
                <version>1.7</version>
              </requireJavaVersion>
            </rules>
          </configuration>
        </execution>
      </executions>
    </plugin>

这就是我得到的错误-

[INFO] --- maven-enforcer-plugin:1.2:enforce (enforce-versions) @ com.microsoft.gittf.core ---
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireJavaVersion failed with message:
Detected JDK Version: 1.6.0-43 is not in the allowed range 1.7.

编辑

mvn执行者:显示信息

显示版本1.7而不是1.6。。。为什么强制检测java 1.6版?

共有3个答案

浦思源
2023-03-14

你不说你在什么操作系统下运行,但是命令“java......”会在路径上找到第一个名为java(或窗口上的java.exe)的可执行文件,这可能是也可能不是你想要使用的文件梅文。

linux下有一个名为“Alternations”的系统,它将java的特定安装映射到一个几乎可以确定的位置(除非你弄乱了你的路径)以成为你路径上的第一个。该系统的目的是允许您在系统中保留多个版本的程序,如java,并将其中一个版本作为默认版本,除非您指定了其他版本。

然而,这与Maven无关,Maven需要JDK安装才能正确运行。在maven依赖的java JDK安装中有许多可执行文件,javac编译器,用于构建jar的jar可执行文件,仅举几个最明显的例子。使用替代系统,您必须为每个选项绘制替代选项,您可能很容易错过一些。这就是为什么Maven依赖于JAVA_HOME变量。

在linux系统中,一个方便设置JAVA_HOME变量的地方是文件~/. mavenrc。Maven读取此文件(如果存在)。

穆劲
2023-03-14

添加以下内容(如果缺少,则创建此文件)~/. mavenrc

export JAVA_HOME=/Library/Java/JavaVirtualMachines/{your-jdk-here}/Contents/Home

。mavenrc仅由maven获取,因此其他Java程序不会受到此更改的影响。

祝灼光
2023-03-14

该版本已修复。你给出的是java的精确版本。永远记住,如果我们不确定确切的版本,我们应该给出范围。将版本更改为[1.7,]

          <requireJavaVersion>
            <version>[1.7,)</version>
          </requireJavaVersion>

这意味着任何等于或大于1.7的版本都是可以接受的。

 类似资料:
  • 我有一个scala测试类,但是当我试图使用Maven目标'test'运行时,测试并没有运行。我收到Maven消息“There are no tests to run”。即使测试位于scala测试类中。我需要添加额外的配置吗? 以下是我的软件包设置: 下面是针对pom文件运行时Maven“测试”目标的输出: [INFO]----------------------生成成功[INFO]--------

  • 这是我添加的公共类NewEmptyJUnitTest的代码{ 这是pom.xml文件 我一直收到这个错误:

  • 在使用maven运行单元测试时,我遇到了这个异常。我的所有测试都没有执行。我的测试类的格式是 我正在运行以下命令来运行此命令: 使用的surefire插件是: 有人知道为什么我的测试没有执行吗?我用的是jUnit 4.8.2和surefire 2.14.1

  • 我对Python非常陌生,最近我一直致力于在pyplay中创建一个小型的太空入侵者风格的游戏。然而,我几乎已经到达了终点,我想让它这样,如果敌人的船(块)与我的船(玩家)相撞,碰撞被检测到,移除我的两艘船并显示一个简短的“游戏结束”信息。 到目前为止,我有探测子弹和敌舰碰撞的代码,我重写了这个代码,如果我的船和敌舰碰撞,但是这个代码只有在我不开枪的情况下才有效,我也必须从一边移动到另一边为了检测到

  • Jenkins不熟悉,所以我有一个java web项目(maven)和一个单元测试文件。测试文件结构:src/test/Java/preprocessortest . Java 该测试在intellij中成功执行。但是Jenkins并不认为这个测试文件是成功的。 它显示“没有要运行的测试” Jenkins控制台日志 pom.xml (编辑)当我使用cmd作为“mvn test”在pc中进行mave

  • 我正在尝试在sony xperia J中调试我的android应用程序,但 我已经启用了USB调试,大容量存储,并安装了索尼pc伴侣。我也允许安装外部应用程序。我尝试启用USB教学。我遗漏了什么附加设置吗? 我想我已经为它安装了驱动程序,但我不太确定。有人能帮我吗?这真的很烦人。