我开发了一个web服务并将其部署到websphere 7.0,并使用JAX-WS API开发了一个动态调度客户端,它也运行在同一个应用服务器上。 我在以下行收到错误:
Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
Error:
Caused by: java.lang.NoSuchMethodError: com/sun/istack/logging/Logger.getLogger(Ljava/lang/Class;)Lcom/sun/istack/logging/Logger;
at com.sun.xml.ws.api.config.management.policy.ManagementAssertion.<clinit>(ManagementAssertion.java:87)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
at com.sun.xml.ws.server.MonitorBase.createManagedObjectManager(MonitorBase.java:177)
at com.sun.xml.ws.client.Stub.<init>(Stub.java:196)
at com.sun.xml.ws.client.Stub.<init>(Stub.java:174)
at com.sun.xml.ws.client.dispatch.DispatchImpl.<init>(DispatchImpl.java:129)
at com.sun.xml.ws.client.dispatch.SOAPMessageDispatch.<init>(SOAPMessageDispatch.java:77)
at com.sun.xml.ws.api.pipe.Stubs.createSAAJDispatch(Stubs.java:143)
at com.sun.xml.ws.api.pipe.Stubs.createDispatch(Stubs.java:264)
at com.sun.xml.ws.client.WSServiceDelegate.createDispatch(WSServiceDelegate.java:390)
at com.sun.xml.ws.client.WSServiceDelegate.createDispatch(WSServiceDelegate.java:401)
at com.sun.xml.ws.client.WSServiceDelegate.createDispatch(WSServiceDelegate.java:383)
at javax.xml.ws.Service.createDispatch(Service.java:336)
我包含了以下依赖项。
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.1</version>
</dependency>
我还尝试添加策略依赖(版本 - 2.2和2.2.1)
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>policy</artifactId>
<version>2.2.1</version>
</dependency>
关于我需要添加哪些更多依赖项的任何想法?
答案 0 :(得分:1)
jaxb-impl jar(2.2)包含与istack-commons-runtime jar相同的日志记录类。
添加以下排除项以更正版本不匹配:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2</version>
<exclusions>
<exclusion>
<artifactId>istack-commons-runtime</artifactId>
<groupId>com.sun.istack</groupId>
</exclusion>
</exclusions>
</dependency>
答案 1 :(得分:0)
我相信JAX-WS 2.1已内置于Java 6中,因此您不需要将其与应用程序捆绑在一起(假设您使用的是Java 6)。如果你尝试,你可能会遇到像这样的类加载错误。
尝试从应用中删除所有jax-ws JAR,包括jaxws-api
。
答案 2 :(得分:0)
问题是这个类可能出现多次 - 类路径中的Logger(com.sun.istack.logging.Logger)。
编译代码时,它可以访问此Logger类,这与运行时发现的不同。
两种可能性:
在运行时只有一个Logger副本,它与编译时使用的不一致。
此Logger有多个副本,类加载器首先找到错误的副本,因此会报告此错误。
检查包含此文件的JAR。
通常在jaxb-osgi.jar中找到。
HTH Manglu
答案 3 :(得分:0)
我遇到了同样的问题,该问题与jaxb版本兼容性有关。 Apache Camel骆驼核心依赖项正在导入jaxb-core和jaxb-impl。从jaxws-rt的依赖项中删除它们可以解决问题。
var xlsx = require("xlsx");
var oldBook = xlsx.readFile("example.xlsx", {cellDates: true});
var oldSheet = oldBook.Sheets["Sheet1"];
var OldSheetJSON = xlsx.utils.sheet_to_json(oldSheet);
var newSheet;
var newBook;
newFileCreator = (oldSheet,propertyValue1,propertyValue2,name) => {
oldSheet[5].__EMPTY_2 = propertyValue1;
oldSheet[6].__EMPTY_2 = propertyValue2;
newSheet = xlsx.utils.json_to_sheet(oldSheet);
newBook = xlsx.utils.book_new();
xlsx.utils.book_append_sheet(newBook,newSheet,name)
xlsx.writeFile(newBook,name + ".xlsx")
};
newFileCreator(oldSheet,"x", "y"," JOHN DOE" );