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

使用PowerMock会导致java.lang.VerifyError异常

束福
2023-03-14

以下操作会在运行时导致异常:

import com.sun.net.httpserver.HttpServer;
import org.junit.runner.RunWith;
import org.powermock.modules.junit4.PowerMockRunner;
import java.net.InetSocketAddress;

@RunWith(PowerMockRunner.class)
public class MainTest {
    @org.junit.Test
    public void main() throws Exception {
        HttpServer.create(new InetSocketAddress(8080), 0);
    }
}

java.lang.VerifyError:操作数堆栈上的类型错误异常详细信息:location:com/sun/net/httpserver/spi/httpserverprovider$1.run()ljava/lang/object;@27:invokestatic原因:类型“sun/net/httpserver/defaulthttpserverprovider”(当前帧,堆栈[0])不能分配给“com/sun/net/httpserver/spi/httpserverprovider”当前帧:bci:@27标志:{}locals:{“com/sun/net/httpserver/spi/httpserverprovider$1”}堆栈:{“sun/net/httpserver/defaulthtserverprovider”}字节码:0x0000000:b800 2599 0007 b800 27b0 b800 2699 0007 0x0000010:b800 27b0 bb00 1b59 b700 2ab8 0028

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>testPowerMock</groupId>
    <artifactId>testPowerMock</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>(whatever version is current)</version>
                <configuration>
                    <!-- or whatever version you use -->
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.6</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito</artifactId>
            <version>1.6.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-core</artifactId>
            <version>1.6.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>1.6.5</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

我认为该异常与PowerMock版本有关,因为删除@runwith(PowerMockRunner.class)行会使“测试”无一例外地运行。

知道那里出了什么问题吗?

共有1个答案

南门野
2023-03-14

如果您使用的是Java7,则可以使用“-xx:-usesplitverifier”作为JVM的参数来避免StackMap帧。

您可以在这里找到更多信息

 类似资料:
  • 我正在尝试使用spring Boot运行一个web应用程序。 将密码映射为硬编码值。 我的问题是:当应用程序运行并且在主类上使用注释时,只要它命中URL就会发生以下异常: javax.servlet.ServletException:在org.springframework.web.servlet.dispatcherservlet.render(dispatcherservlet.java:13

  • 问题内容: 我想我发现了一个错误。也许不是,但是Super CSV不能很好地处理。 我正在使用MapReader解析具有41列的CSV文件。但是,我得到的是CSV- 而使我获得CSV的Web服务错了一行。“标题”行是制表符分隔的行,具有41个单元格。 而且“错误的行”是一个由制表符分隔的行,其中包含36个单元格,其内容没有任何意义。 这是我正在使用的代码: 我在上面提到的行中执行mapReader

  • 我正在尝试实现View.OnClickListener接口和GoogleApiclient如下 但这失败了,错误如下 错误:任务': app: dexDebug'执行失败。com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException: Process'命令'C:\Program F

  • 应用程序可以持久化用户,以后可以修改。最近无法修改用户,引发了异常。用户实体被持久化,没有错误或验证。有人知道是什么导致了这种行为,或者我如何找到更多细节吗?

  • (2016.3.15更新) 上周我遇到了一个奇怪的问题,我想和你讨论一下这个问题。 但是,如果我使用sendMessage(SearchHandler.Object...)而不是runOnUiThread,一切都会很顺利!! java: SearchActivity.java: 2)在运行getActivity().runonuithread()之前,首先判断getActivity()==null

  • 在IntelliJ IDEA中,我试图用spark代码执行一个Java文件,这将产生Java。验证错误。 StackTrace如下所示: 错误执行器:java阶段1.0(TID 2)中任务0.0中出现异常。lang.VerifyError:(class:org/apache/spark/sql/catalyst/expressions/GeneratedClass$SpecificOrdering