您的位置:首页 > 编程语言 > Java开发

关于华为smproxy_smgp.jar包的Cfg加载InfoX配置信息报java.net.MalformedURLException: no protocol:

2016-05-26 09:58 519 查看
第一次写博文,写的不好请见谅。

昨天遇到这个问题,搞了一个下午都没有搞定,截取部分主要代码,如下:

String file=SMSender.class.getResource("/configsend.xml").getPath();

this.config = new Cfg(file).getArgs("SMGPConnect");

说明:这个问题在linux环境下是没有问题的

报错如下:

09:57:36,959 INFO [STDOUT] 09:57:36,956 ERROR [SMSender] Read gateway configuration error: java.net.MalformedURLException: no protocol: /F:/jboss-snsp/server/default/deploy/IdopSms.war/WEB-INF/classes/configsend.xml

java.net.MalformedURLException: no protocol: /F:/jboss-snsp/server/default/deploy/IdopSms.war/WEB-INF/classes/configsend.xml

at java.net.URL.<init>(URL.java:567)

at java.net.URL.<init>(URL.java:464)

at java.net.URL.<init>(URL.java:413)

at com.huawei.smproxy.util.Cfg.<init>(Cfg.java:68)

at com.huawei.smproxy.util.Cfg.<init>(Cfg.java:47)

at com.sxit.util.SMSender.<init>(SMSender.java:51)

at com.sxit.util.SMSender.getInstance(SMSender.java:41)

at com.cdc.smgp.msg.service.impl.MsgServiceImpl.sendMsg(MsgServiceImpl.java:95)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)

at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

at $Proxy61.sendMsg(Unknown Source)

at com.common.jms.QueueMessageListener.onMessage(QueueMessageListener.java:39)

at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:562)

at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:500)

at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:468)

at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:326)

at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:264)

at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1071)

at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1063)

at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:960)

at java.lang.Thread.run(Thread.java:662)

还求教了公司同时帮忙,还是没有搞定。

也在网上查找了很久,都是说配置文件编码问题什么的,很无奈。只好自己去看看smproxy_smgp.jar包的cfg类,发现这个类的两个构造方法的参数要求的是url,在看看我获取文件的路径是/F:/…的格式,是本地路径,考虑到linux上也是获取本地路径的,就没有问题,而window有问题,立马就想到了联网下访问window系统的文件夹时是要加上file://的file协议的,因此我在路径前面加上“file://”,再去测试发现问题已经解决了。所有拿出来分享一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: