gpt4 book ai didi

java.lang.VerifyError : Bad type on operand stack in method com. sun.net.httpserver.spi.HttpServerProvider 错误

转载 作者:搜寻专家 更新时间:2023-10-31 20:03:17 25 4
gpt4 key购买 nike

我一直被这个问题所困扰,并设法将其缩小到一个小文件,该文件失败并抛出 java.lang.VerifyError当使用 fork 从 Ant 调用时设置为 false<java>任务,但在 fork成功设置为 true .

独立文件是:

package foo;

import javax.xml.ws.Endpoint;

import javax.jws.WebService;

@WebService
class Hello {
public String sayHello() {
return "hello";
}
}


public class FooMain {
public static void main(String args[]) throws Exception {
Object implementor = new Hello();
String address = "http://localhost:9000/SoapContext/SoapPort";
Endpoint.publish(address, implementor);
}
}

当使用 Ant 和 fork 调用时设置为 false它抛出:

 [java] java.lang.VerifyError: Bad type on operand stack
[java] Exception Details:
[java] Location:
[java] com/sun/net/httpserver/spi/HttpServerProvider$1.run()Ljava/lang/Object; @27: invokestatic
[java] Reason:
[java] Type 'sun/net/httpserver/DefaultHttpServerProvider' (current frame, stack[0]) is not assignable to 'com/sun/net/httpserver/spi/HttpServerProvider'
[java] Current Frame:
[java] bci: @27
[java] flags: { }
[java] locals: { 'com/sun/net/httpserver/spi/HttpServerProvider$1' }
[java] stack: { 'sun/net/httpserver/DefaultHttpServerProvider' }
[java] Bytecode:
[java] 0000000: b800 2599 0007 b800 27b0 b800 2699 0007
[java] 0000010: b800 27b0 bb00 1a59 b700 2ab8 0028 57b8
[java] 0000020: 0027 b0
[java] Stackmap Table:
[java] same_frame(@10)

当用 fork 调用时设置为 true它成功了。具体异常VerifyError特别是当与“Bad type on operand stack”结合使用时,从我读过的内容中指向一个编译器错误,但为什么它会成功或失败取决于 fork <java> 的属性 Ant 任务超出了我的范围。有什么想法吗?我在跑Ubuntu 12.04使用以下 Java 工具:

$ java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) Server VM (build 24.0-b56, mixed mode)
$ javac -version
javac 1.7.0_40
$ ant -version
Apache Ant(TM) version 1.8.2 compiled on December 3 2011
$ ant -diagnostics | grep java.vm
java.vm.version : 24.0-b56
java.vm.vendor : Oracle Corporation
java.vm.name : Java HotSpot(TM) Server VM
java.vm.specification.name : Java Virtual Machine Specification
java.vm.specification.vendor : Oracle Corporation
java.vm.specification.version : 1.7
java.vm.info : mixed mode

重要更新

当使用 fork 从 Ant 调用时设置为 false我还必须明确添加 /usr/lib/jvm/jdk1.7.0/jre/lib/rt.jar到 CLASSPATH 以触发 VerifyError异常(exception)。否则它会在到达那个点之前失败:

javax.xml.ws.WebServiceException: Provider com.sun.xml.internal.ws.spi.ProviderImpl not found

当然必须添加 rt.jar在 CLASSPATH 中非常奇怪,尤其是因为它是 rt.jarjava我正在使用的版本。

最佳答案

这很可能是由于 java 版本不匹配,我看到你运行的是 1.7.0_40 和 1.7.0_24。在调用 Ant 之前确保 JAVA_HOME 设置为 1.7.0_40 JDK。有关如何执行此操作的更多信息,请参阅以下帖子。 How do I change the JAVA_HOME for ant?

关于java.lang.VerifyError : Bad type on operand stack in method com. sun.net.httpserver.spi.HttpServerProvider 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18903693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com