Java 8:"UseSplitVerifier" 等价于什么?
Java 8: What is the equivalent of "UseSplitVerifier"?
我在 Mac 10.9.5 上使用 Maven 3.2.3 并将其用于我的编译器插件...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-proc:none</compilerArgument>
<fork>true</fork>
<!-- <compilerId>eclipse</compilerId>-->
</configuration>
<executions>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
我有这个用于我的 surefire-plugin 配置...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<reuseForks>true</reuseForks>
<argLine>-Xmx2048m -XX:MaxPermSize=512M -XX:-UseSplitVerifier ${argLine}</argLine>
<skipTests>${skipAllTests}</skipTests>
</configuration>
</plugin>
但是,在 运行 "mvn clean install" 我收到这个警告...
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option UseSplitVerifier; support was removed in 8.0
"UseSplitVerifier" 的 Java 8 是多少?
没有对应的。请注意,您的配置中的选项是 -UseSplitVerifier
(注意前面的减号),因此该选项表示 not 使用 SplitVerifier 但从 Java 8 开始,SplitVerifier是强制性的。
SplitVerifier 是在 Java 6 中引入的,当时是可选的,在 Java 7 中成为默认值。但是在 Java 7 中,该选项仍然受支持,所以如果字节码处理工具不兼容,它可能会被关闭。
这是为了提供一个宽限期,在此期间可以更新这些工具以与相关的 StackMapFrame
字节码属性兼容。宽限期现在结束了。
如果你遇到的只是那个警告,换句话说,你没有遇到兼容性问题,你可以删除那个选项。否则,您必须更新有问题的 tools/libraries.
您应该停止使用 -XX:-UseSplitVerifier。反正Java8不支持。
并将您的 maven-compiler-plugin 升级到 3.2 。这将解决您的字节码验证问题。
我在 Mac 10.9.5 上使用 Maven 3.2.3 并将其用于我的编译器插件...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-proc:none</compilerArgument>
<fork>true</fork>
<!-- <compilerId>eclipse</compilerId>-->
</configuration>
<executions>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
我有这个用于我的 surefire-plugin 配置...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<reuseForks>true</reuseForks>
<argLine>-Xmx2048m -XX:MaxPermSize=512M -XX:-UseSplitVerifier ${argLine}</argLine>
<skipTests>${skipAllTests}</skipTests>
</configuration>
</plugin>
但是,在 运行 "mvn clean install" 我收到这个警告...
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option UseSplitVerifier; support was removed in 8.0
"UseSplitVerifier" 的 Java 8 是多少?
没有对应的。请注意,您的配置中的选项是 -UseSplitVerifier
(注意前面的减号),因此该选项表示 not 使用 SplitVerifier 但从 Java 8 开始,SplitVerifier是强制性的。
SplitVerifier 是在 Java 6 中引入的,当时是可选的,在 Java 7 中成为默认值。但是在 Java 7 中,该选项仍然受支持,所以如果字节码处理工具不兼容,它可能会被关闭。
这是为了提供一个宽限期,在此期间可以更新这些工具以与相关的 StackMapFrame
字节码属性兼容。宽限期现在结束了。
如果你遇到的只是那个警告,换句话说,你没有遇到兼容性问题,你可以删除那个选项。否则,您必须更新有问题的 tools/libraries.
您应该停止使用 -XX:-UseSplitVerifier。反正Java8不支持。 并将您的 maven-compiler-plugin 升级到 3.2 。这将解决您的字节码验证问题。