Java 8: Что такое эквивалент "UseSplitVerifier"?

Я использую Maven 3.2.3 на Mac 10.9.5 и имею это для моего плагина компилятора ...

                                    <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>
                            <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

что такое эквивалент Java 8 "UseSplitVerifier"?

2 ответов


нет эквивалента. Обратите внимание, что опция в вашей конфигурации -UseSplitVerifier (обратите внимание на добавленный минус), поэтому опция говорит не чтобы использовать SplitVerifier, но начиная с Java 8, SplitVerifier является обязательным.

SplitVerifier был введен с Java 6, будучи необязательным в то время и стал по умолчанию с Java 7. Но с Java 7 опция все еще поддерживалась, поэтому она могла быть отключена в случае, если инструмент обработки байт-кода был несовместимый.

Это должно было обеспечить льготный период, в котором эти инструменты могут обновляться, чтобы быть совместимыми с соответствующими StackMapFrame атрибут байт-код. Этот льготный период закончился.

Если единственное, с чем вы сталкиваетесь, это предупреждение, другими словами, у вас нет проблем с совместимостью, вы можете просто удалить эту опцию. В противном случае вам придется обновить проблемные инструменты/библиотеки.


вы должны прекратить использовать-XX: - UseSplitVerifier. В любом случае, это не поддерживается Java 8. И обновите плагином Maven-компилятор-plugin для 3.2 . Который будет решать ваши проблемы с байт-кода верификации.