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

运行maven exec插件时java版本错误

任元青
2023-03-14

我当前的java版本是7:

java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) Server VM (build 24.80-b11, mixed mode)

我有命令mvn8,其中设置java_home为8:

mvn8 -version
Java HotSpot(TM) Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0
Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)
Maven home: /home/.../apache-maven-3.0.3
Java version: 1.8.0_66, vendor: Oracle Corporation
Java home: /home/.../jdk1.8.0_66/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-45-generic", arch: "i386", family: "unix"

现在的问题是。当我在项目中运行我的一个配置文件(有生成文件的maven exec插件)时:

mvn8 exec:exec -P mo2ja -o

我得到了例外:

Java HotSpot(TM) Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0
[INFO] Scanning for projects...
...
 ERROR:java.time.LocalDateTime cannot be resolved to a type. 
ERROR:java.time.LocalDate cannot be resolved to a type. 
[ERROR] Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 2 (Exit value: 2)
    at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:764)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:711)
    at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:289)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

所以它似乎仍然需要我的系统java。为什么当mvn版本打印java8时?当我更改我的系统java时,它可以正常工作。这是maven的一些功能,也可能是我使用的插件问题?

更新:

调试maven exec插件时,我看到这一行:

[DEBUG] Executing command line: java -classpath ... org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader -control definitions.model -models entity.model,dao.model -source src/main/resources -target src-gen

所以问题是如何在执行mvn时使用相同的java版本

这是我的个人资料:

    <profile>
        <id>mo2ja</id>
        <dependencies>
            <dependency>
                <groupId>org.sqlproc.model</groupId>
                <artifactId>sqlmodel</artifactId>
                <scope>runtime</scope>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <configuration>
                        <executable>java</executable>
                        <classpathScope>runtime</classpathScope>
                        <arguments>
                            <argument>-classpath</argument>
                            <classpath>
                                <dependency>org.sqlproc.model:sqlmodel</dependency>
                                <dependency>mysql:mysql-connector-java</dependency>
                                <dependency>org.sqlproc:sql-processor</dependency>
                                <dependency>org.slf4j:slf4j-api</dependency>
                            </classpath>
                            <argument>org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader</argument>
                            <argument>-control</argument>
                            <argument>definitions.model</argument>
                            <argument>-models</argument>
                            <argument>entity.model,dao.model</argument>
                            <argument>-source</argument>
                            <argument>src/main/resources</argument>
                            <argument>-target</argument>
                            <argument>src-gen</argument>
                        </arguments>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

共有1个答案

梁丘烨
2023-03-14

更改您的maven编译器插件以允许1.8级

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin>
</plugins>
 类似资料:
  • null 现在我只想在我的目录中测试命令: 我得到了这个: 失败:生成失败,出现异常。*错误:Java.lang.unsupportedClassVersionError:org/javamodularity/modulePlugin/moduleSystemPlugin是由最新版本的Java运行时(类文件版本55.0)编译的,此版本的Java运行时只识别类文件版本高达52.0 我使用SDKMAN

  • 问题内容: 我需要解决JDK 1.5中的Java错误,该错误已在1.6中修复。我正在使用以下条件: 这对其他JVM有用吗?有更好的方法来检查吗? 问题答案: 是每个JVM中都存在的系统属性。有两种可能的格式: Java的8或降低:1.6.0_23,1.7.0,1.7.0_80,1.8.0_211 Java的9或更高:9.0.1,11.0.4,12,12.0.1 这是提取主要版本的技巧:如果它是版本

  • http://www.SonarLint.org/Eclipse/:和“2016年6月3日-我们发布了SonarLint for Eclipse的2.1.0版本,并扩展了对SonarQube 4.5.4+的支持”, 最新的版本是2.1我已经安装了。我的SonarQube服务器是4.5.4。我是不是错过了什么,或者有什么解决办法。

  • 在eclipse中获取以下错误,同时导入maven项目并尝试更新它...错误解决版本的插件'org.springframework.boot: sping-boo-maven-plugin'从仓库[本地(C:\tBuild\repo),中央(https://repo.maven.apache.org/maven2)]:插件没有找到任何插件库- 在此处输入图像描述

  • 问题内容: 我必须使用两个版本的Java(1.6.21和1.7)。我公司的代码取决于1.6_21,我们计划使用人工制品。我们正在本地测试工件,但是工件需要Java 1.7或更高版本。我希望我的默认Java主目录指向1.6_21,对于工件应为1.7。 但是问题出在我安装Java 7以后,它就将自身设置为默认值。我读过很多文章,它们解释了如何管理Java的两个版本,但是我的工件和Eclipse必须同时

  • 我需要用于Angular 8 CLI的node10版本,并且在使用node10时。16.2,我得到如下所示的错误,并在运行 SyntaxError:在导出时,在严格模式之外尚不支持块作用域声明(let、const、function、class)。在模块上运行InthisContext(vm.js:53:16) _在对象上编译(module.js:387:25) 。模块_扩展。。js(module.