SOAPUI 无法启动,Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitiali

本文介绍了SOAPUI启动时报错的问题及其解决方案。错误主要源于log4j相关类未找到导致的初始化错误。通过检查和移除JDK扩展目录中可能冲突的common-logging jar包,最终使SOAPUI恢复正常启动。

SOAPUI之前是可以用的,一段时间不用后,突然用不了了,启动的时候报了如下的错:

Configuring log4j from [F:\tools\SOAPUI\SoapUI-5.0.0\bin\soapui-log4j.xml]
22:07:54,618 INFO  [DefaultSoapUICore] initialized soapui-settings from [C:\Users\Administrator\soapui-settings.xml]
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
        at com.eviware.soapui.DefaultSoapUICore.initSettings(DefaultSoapUICore.java:396)
        at com.eviware.soapui.SwingSoapUICore.initSettings(SwingSoapUICore.java:122)
        at com.eviware.soapui.DefaultSoapUICore.init(DefaultSoapUICore.java:148)
        at com.eviware.soapui.StandaloneSoapUICore.<init>(StandaloneSoapUICore.java:40)
        at com.eviware.soapui.SoapUI$SoapUIRunner.run(SoapUI.java:697)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
        at java.awt.EventQueue.access$200(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:694)
        at java.awt.EventQueue$3.run(EventQueue.java:692)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: N
o suitable Log constructor [Ljava.lang.Class;@4331d29e for org.apache.commons.logging.impl.Log4JLogger (Caused by java.l
ang.NoClassDefFoundError: org/apache/log4j/Category) (Caused by org.apache.commons.logging.LogConfigurationException: No
 suitable Log constructor [Ljava.lang.Class;@4331d29e for org.apache.commons.logging.impl.Log4JLogger (Caused by java.la
ng.NoClassDefFoundError: org/apache/log4j/Category))
        at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:543)
        at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:235)
        at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:209)
        at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:351)
        at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.<init>(ThreadSafeClientConnManager.java:116)
        at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.<init>(ThreadSafeClientConnManager.java:91)
        at com.eviware.soapui.impl.wsdl.support.http.SoapUIMultiThreadedHttpConnectionManager.<init>(SoapUIMultiThreaded
HttpConnectionManager.java:74)
        at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport$Helper.<init>(HttpClientSupport.java:216)
        at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport.<clinit>(HttpClientSupport.java:61)
        ... 19 more
Caused by: org.apache.commons.logging.LogConfigurationException: No suitable Log constructor [Ljava.lang.Class;@4331d29e
 for org.apache.commons.logging.impl.Log4JLogger (Caused by java.lang.NoClassDefFoundError: org/apache/log4j/Category)
        at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:413)
        at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:529)
        ... 27 more
Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Category
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2532)
        at java.lang.Class.getConstructor0(Class.java:2842)
        at java.lang.Class.getConstructor(Class.java:1718)
        at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:410)
        ... 28 more
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Category
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 33 more

 

看错误信息,是无法加载到类java.lang.ClassNotFoundException: org.apache.log4j.Category
,查了一下soapui下的lib文件夹,common-logging这个jar包是存在的,后面也不知道什么原因,

上网查了一下,有说到是jar包冲突,就到jdk(我的jdk是jdk1.7.0_60)下查看,

在目录C:\Program Files\Java\jdk1.7.0_60\jre\lib\ext下发现了common-logging这个jar包,将其删除后,

重新启动SOAPUI,成功。。。

 

 

Java 中,`javax.xml.ws.WebServiceException` 是一个与 JAX-WS 相关的运行时异常,通常表示在 Web 服务调用过程中发生了错误。如果该异常导致了空指针异常(`NullPointerException`),则表明问题可能与服务调用过程中某些对象未被正确初始化或处理有关。 以下是可能导致 `WebServiceException` 并引发空指针异常的常见原因及解决方法: ### 1. **服务端点未正确初始化** 当调用 Web 服务时,如果服务端点未正确初始化或配置,则可能导致 `WebServiceException`。例如,使用 `Service.create()` 方法创建服务实例时,若传入的 WSDL URL 或服务名称为空或无效,将导致异常。确保所有参数均正确设置,并检查服务端点地址是否有效。 ```java URL wsdlURL = new URL("http://example.com/MyService?wsdl"); MyService service = new MyService(wsdlURL, new QName("http://example.com/", "MyService")); MyPort port = service.getMyPort(); ``` ### 2. **请求参数未正确设置** 如果请求参数为空或未正确设置,可能导致空指针异常。例如,在调用 Web 服务方法时,若传入的参数为 `null`,而服务端未对此进行处理,则可能引发异常。确保所有参数在调用前已正确初始化,并在调用前进行空值检查。 ```java if (input != null) { response = port.callWebService(input); } else { throw new IllegalArgumentException("Input parameter cannot be null"); } ``` ### 3. **处理大文件或复杂数据类型时的序列化问题** 在处理包含大文件(如压缩包)的请求时,若数据未正确序列化或传输,可能导致 `WebServiceException`。例如,当请求体中包含分卷压缩包时,可能会因数据格式不兼容而导致异常。建议使用 `MTOM`(Message Transmission Optimization Mechanism)来优化二进制数据的传输,并确保服务端支持该机制。 ```java // 启用 MTOM BindingProvider bindingProvider = (BindingProvider) port; bindingProvider.getRequestContext().put(BindingProviderProperties.ENABLE_MTOM, true); ``` ### 4. **网络或服务器问题** 网络连接中断或服务器端未正确响应可能导致 `WebServiceException`。例如,若服务器端在处理请求时发生错误,可能会返回异常。建议在网络请求失败时进行重试,并捕获异常以进行适当的处理。 ```java try { response = port.callWebService(input); } catch (WebServiceException e) { // 处理异常并记录日志 System.err.println("WebService call failed: " + e.getMessage()); // 可以选择重试或抛出自定义异常 } ``` ### 5. **日志记录与调试** 在调试过程中,启用详细的日志记录可以帮助识别问题的根本原因。可以使用 `java.util.logging` 或其他日志框架(如 Log4j)来记录详细的请求和响应信息。 ```java import java.util.logging.Logger; Logger logger = Logger.getLogger(MyClass.class.getName()); logger.info("Calling web service with input: " + input); ``` ### 6. **检查依赖库版本** 确保所有相关的 JAX-WS 和 Apache CXF 依赖库版本兼容,并且没有冲突。版本不兼容可能导致 `WebServiceException`。可以通过检查项目的构建文件(如 `pom.xml` 或 `build.gradle`)来确认依赖库版本。 ```xml <!-- Maven 示例 --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.4.4</version> </dependency> ``` ### 7. **异常处理策略** 在调用 Web 服务时,应采用适当的异常处理策略。可以使用 `try-catch` 块来捕获 `WebServiceException` 并进行相应的处理,例如记录错误信息、通知用户或尝试恢复。 ```java try { response = port.callWebService(input); } catch (WebServiceException e) { // 处理异常 System.err.println("WebServiceException occurred: " + e.getMessage()); } ``` ### 8. **测试与验证** 在开发和测试阶段,应使用工具(如 SoapUI 或 Postman)来验证 Web 服务的调用是否正常工作。这有助于快速识别和解决问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值