运行类时,我有以下异常:



我试图从类包的maven pom.xml内部增加jvmArg堆大小:

http://maven.apache.org/xsd/maven-4.0.0.xsd“>
4.0.0

<parent>
    (...)
</parent>


<artifactId>(...)</artifactId>
<name>(...)</name>

<properties>
    <javaOpts.Xmx>4g</javaOpts.Xmx> <!-- default that can be adjusted on the command line with -DjavaOpts.Xmx=... -->
    <(...).basedir>${project.basedir}/..</(...).basedir>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>scala-maven-plugin</artifactId>
            <configuration>
                <launchers>
                    <launcher>
                        <id>MyClassName</id>
                        <mainClass>(...)</mainClass>
                        <jvmArgs>
                            <jvmArg>-Xmx${javaOpts.Xmx}</jvmArg>
                        (...)

我尝试用很多值在最后引用的行:
  • <jvmArg>-Xmx512m{javaOpts.Xmx}</jvmArg>
  • <jvmArg>-Xmx4096M{javaOpts.Xmx}</jvmArg>
  • ...
  • <jvmArg>-Xmx10000000000M{javaOpts.Xmx}</jvmArg>

  • 但是对于他们所有人,我都有相同的错误。

    有人可以帮助我吗?
    观察:我正在从 IntelliJ IDEA 运行。

    最佳答案

    Java 7

    这不是Maven问题,您需要为VM提供更多内存。您可以通过环境变量来执行此操作,Maven Launcher会在加载时自动选择这些设置,并使用它们来配置基础Java VM。

    简单的方法是:
    export MAVEN_OPTS="-Xmx1024M -Xss128M -XX:MaxPermSize=1024M -XX:+CMSClassUnloadingEnabled"
    视窗:
    set MAVEN_OPTS=-Xmx1024M -Xss128M -XX:MaxPermSize=1024M -XX:+CMSClassUnloadingEnabled
    (无双引号)

    Java 8

    Java 8已用元空间代替了永久生成,新设置如下所示:
    export MAVEN_OPTS="-Xmx1024M -Xss128M -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=1024M -XX:+CMSClassUnloadingEnabled"

    09-06 12:42