2013-03-07 101 views
1

我使用smsj API从PC发送短信到手机通过GSM调制解调器。如在page上给出的,我已经尝试了下面的代码。发送短信从PC到手机

package org.marre; 

import java.io.IOException; 
import org.marre.sms.SmsException; 


public class SendMessage { 

    public void send() { 
    try{ 

     // Send SMS with clickatell 
     SmsSender smsSender = SmsSender.getGsmSender("COM7"); 
     String msg ="sample message"; 
     // International number to reciever without leading "+" 
     String reciever = "9561356345"; 
     // Number of sender (not supported on all transports) 
     String sender ="9561356345"; 
     // Connect 
     smsSender.connect(); 
     // Send message 
     smsSender.sendTextSms(msg, reciever, sender);  
     // Disconnect 
     smsSender.disconnect(); 
    } catch(IOException i){ 
     i.printStackTrace(); 
     System.out.println("i"); 
    } catch(SmsException s){ 
     s.printStackTrace(); 
     System.out.println("s"); 
    } 
    } 

    public static void main(String args[]){ 
     SendMessage app = new SendMessage(); 
     app.send(); 
    } 


} 

但我收到此错误信息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 
    at org.marre.sms.transport.gsm.SerialComm.<clinit>(SerialComm.java:58) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at org.marre.sms.transport.gsm.GsmTransport.class$(GsmTransport.java:83) 
    at org.marre.sms.transport.gsm.GsmTransport.<clinit>(GsmTransport.java:83) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at org.marre.sms.transport.SmsTransportManager.getTransport(SmsTransportManager.java:75) 
    at org.marre.SmsSender.<init>(SmsSender.java:112) 
    at org.marre.SmsSender.getGsmSender(SmsSender.java:180) 
    at org.marre.SendMessage.send(SendMessage.java:12) 
    at org.marre.SendMessage.main(SendMessage.java:30) 
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 12 more 

我在java的初学者。请帮助我的代码。

note:我之前使用smslib api发送简单的文本消息。但是这不支持ems消息。如果您有其他支持ems消息的库,请告诉我。 smsj是我可以轻松下载的一个。

+2

首先,你已经给了我们错误的代码。类“SiemensOtaMessage”的代码在哪里?另外,请发布完整的代码堆栈跟踪。 – 2013-03-07 07:16:13

+0

@ Buhake Sindi我已经更新了这个问题 – newbee 2013-03-07 07:18:33

+0

@BuhakeSindi它的第三部分代码不是他的代码。 – CloudyMarble 2013-03-07 07:18:39

回答

1

问题的真正原因就在于此:

Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory 

编译器无法从路径中找到org.slf4j.LoggerFactory

下载SLF4J并将该库添加到您的类路径中并编译您的代码。

注:作为smsj引用了一个很老的版本SLF4J,你需要使用旧版本还有:http://mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.0-beta9所有的

+0

我将这个库添加到类路径中,并再次构建项目。但它仍然给出同样的错误。 – newbee 2013-03-07 07:47:02

+1

@newtoandrouid试试这一个:http://mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.0-beta9,因为这是你的库引用的版本 – Adrian 2013-03-07 07:50:15

+0

@Adrian谢谢。加入这个删除了错误:) – newbee 2013-03-07 08:23:03