1

I would like to know if someone knows why I can't send sms with my E226 3g modem. I have configured the example class, I setted modem model, PIN and Smsc number.

public class SendMessage
{
    public void doIt() throws Exception
    {
        OutboundNotification outboundNotification = new OutboundNotification();
        System.out.println("Example: Send message from a serial gsm modem.");
        System.out.println(Library.getLibraryDescription());
        System.out.println("Version: " + Library.getLibraryVersion());
        SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM4", 9600, "Huawei", "E226");
        gateway.setInbound(true);
        gateway.setOutbound(true);
        gateway.setSimPin("1010");
        // Explicit SMSC address set is required for some modems.
        // Below is for VODAFONE GREECE - be sure to set your own!
        gateway.setSmscNumber("+555181136200");
        Service.getInstance().setOutboundMessageNotification(outboundNotification);
        Service.getInstance().addGateway(gateway);
        Service.getInstance().startService();
        System.out.println();
        System.out.println("Modem Information:");
        System.out.println("  Manufacturer: " + gateway.getManufacturer());
        System.out.println("  Model: " + gateway.getModel());
        System.out.println("  Serial No: " + gateway.getSerialNo());
        System.out.println("  SIM IMSI: " + gateway.getImsi());
        System.out.println("  Signal Level: " + gateway.getSignalLevel() + " dBm");
        System.out.println("  Battery Level: " + gateway.getBatteryLevel() + "%");
        System.out.println();
        // Send a message synchronously.
        OutboundMessage msg = new OutboundMessage("+556199655944", "Hello from SMSLib!");
        Service.getInstance().sendMessage(msg);
        System.out.println(msg);
        // Or, send out a WAP SI message.
        //OutboundWapSIMessage wapMsg = new OutboundWapSIMessage("306974000000",  new URL("http://www.smslib.org/"), "Visit SMSLib now!");
        //Service.getInstance().sendMessage(wapMsg);
        //System.out.println(wapMsg);
        // You can also queue some asynchronous messages to see how the callbacks
        // are called...
        //msg = new OutboundMessage("309999999999", "Wrong number!");
        //srv.queueMessage(msg, gateway.getGatewayId());
        //msg = new OutboundMessage("308888888888", "Wrong number!");
        //srv.queueMessage(msg, gateway.getGatewayId());
        System.out.println("Now Sleeping - Hit <enter> to terminate.");
        System.in.read();
        Service.getInstance().stopService();
    }

    public class OutboundNotification implements IOutboundMessageNotification
    {
        public void process(AGateway gateway, OutboundMessage msg)
        {
            System.out.println("Outbound handler called from Gateway: " + gateway.getGatewayId());
            System.out.println(msg);
        }
    }

    public static void main(String args[])
    {
        SendMessage app = new SendMessage();
        try
        {
            app.doIt();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

It outputs

run:
Example: Send message from a serial gsm modem.
SMSLib: A Java API library for sending and receiving SMS via a GSM modem or other supported gateways.
This software is distributed under the terms of the Apache v2.0 License.
Web Site: http://smslib.org
Version: 3.5.2
0      2012-06-28 19:08:32,652 [main] INFO  org.smslib.Service  - SMSLib: A Java API library for sending and receiving SMS via a GSM modem or other supported gateways.
This software is distributed under the terms of the Apache v2.0 License.
Web Site: http://smslib.org
3      2012-06-28 19:08:32,655 [main] INFO  org.smslib.Service  - Version: 3.5.2
3      2012-06-28 19:08:32,655 [main] INFO  org.smslib.Service  - JRE Version: 1.7.0_05
5      2012-06-28 19:08:32,657 [main] INFO  org.smslib.Service  - JRE Impl Version: 23.1-b03
Exception in thread "Thread-3" java.lang.ExceptionInInitializerError
5      2012-06-28 19:08:32,657 [main] INFO  org.smslib.Service  - O/S: Windows 7 / amd64 / 6.1
8      2012-06-28 19:08:32,660 [main] DEBUG org.smslib.threading.AServiceThread  - Initialized.
8      2012-06-28 19:08:32,660 [NotifyQueueManager] DEBUG org.smslib.threading.AServiceThread  - Running...
8      2012-06-28 19:08:32,660 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager  - NotifyQueueManager running...
9      2012-06-28 19:08:32,661 [main] INFO  org.smslib.queues.DefaultQueueManager  - Queue directory not defined. Queued messages will not be saved to filesystem.
9      2012-06-28 19:08:32,661 [main] DEBUG org.smslib.threading.AServiceThread  - Initialized.
10     2012-06-28 19:08:32,662 [DelayQueueManager] DEBUG org.smslib.threading.AServiceThread  - Running...
10     2012-06-28 19:08:32,662 [DelayQueueManager] DEBUG org.smslib.queues.AbstractQueueManager$DelayQueueManager  - DelayQueueManager running...
10     2012-06-28 19:08:32,662 [main] DEBUG org.smslib.threading.AServiceThread  - Initialized.
    at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:69)
    at org.smslib.modem.AModemDriver.connect(AModemDriver.java:114)
10     2012-06-28 19:08:32,662 [WatchDog] DEBUG org.smslib.threading.AServiceThread  - Running...
    at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:189)
11     2012-06-28 19:08:32,663 [Thread-3] INFO  org.smslib.modem.ModemGateway  - GTW: modem.com1: Starting gateway, using Huawei E226 AT Handler.
    at org.smslib.Service$1Starter.run(Service.java:276)
Caused by: java.lang.RuntimeException: CommPortIdentifier class not found
11     2012-06-28 19:08:32,663 [Thread-3] INFO  org.smslib.modem.SerialModemDriver  - GTW: modem.com1: Opening: COM4 @9600
    at org.smslib.helper.CommPortIdentifier.<clinit>(CommPortIdentifier.java:76)
    ... 4 more
15010  2012-06-28 19:08:47,662 [WatchDog] DEBUG org.smslib.threading.AServiceThread  - Running...
30011  2012-06-28 19:09:02,663 [WatchDog] DEBUG org.smslib.threading.AServiceThread  - Running...
45012  2012-06-28 19:09:17,664 [WatchDog] DEBUG org.smslib.threading.AServiceThread  - Running...
60012  2012-06-28 19:09:32,664 [WatchDog] DEBUG org.smslib.threading.AServiceThread  - Running...
75013  2012-06-28 19:09:47,665 [WatchDog] DEBUG org.smslib.threading.AServiceThread  - Running...
90014  2012-06-28 19:10:02,666 [WatchDog] DEBUG org.smslib.threading.AServiceThread  - Running...

That's all I get for hours. Any idea why doesn't work?

dextervip
  • 4,999
  • 16
  • 65
  • 93

3 Answers3

3
Caused by: java.lang.RuntimeException: CommPortIdentifier class not found

You are missing a library, whichever one contains CommPortIdentifier. Figure out which library you need and include it in the classpath.

Jim Garrison
  • 85,615
  • 20
  • 155
  • 190
2

You're missing javax.comm. The situation with javax.comm on Windows is a bit of a mess, the smslib installation instructions suggest to use rxtx instead and point to Cloudhopper's page for a Windows version. Get that library, add it as a dependency to your project and you should be all set.

fvu
  • 32,488
  • 6
  • 61
  • 79
  • I have tried javacomm but It doesn't support Win 7 64 bits, the rxtx library from cloudhopper's page has a 64 bits version which works well. Thank you – dextervip Jun 28 '12 at 23:24
  • I've the same problem but in my case i already had do all this steps, So, if you know another issue that can cause this please share me it. – Muhammed Refaat Jun 22 '13 at 10:20
  • 1
    @MuhammedRefaat please create a new question for your problem, don't tack it to some other question as a comment. Read the [how to ask](http://stackoverflow.com/help/how-to-ask) posting to understand how to create a good question that without doubt will be answered quickly. Good luck! – fvu Jun 22 '13 at 21:52
0

You are missing comm library.There are two libraries which you can resolve this.

Here is the Code Snippet which throws this error:

try
        {
            classCommPortIdentifier = Class.forName("javax.comm.CommPortIdentifier");
        }
        catch (ClassNotFoundException e1)
        {
            try
            {
                classCommPortIdentifier = Class.forName("gnu.io.CommPortIdentifier");
            }
            catch (ClassNotFoundException e2)
            {
                throw new RuntimeException("CommPortIdentifier class not found");
            }
        }

So, make sure either javax.comm.CommPortIdentifier of gnu.io.CommPortIdentifier classes are in your class path.Also make sure you add native rxtxSerial.dll to {jre}/bin/

gnu.io.CommPortIdentifier is from rxtx library which has new packaging convension.

There was package name change recently and therefore you will get confused in using RxTx library. Please get some idea from above code and make things clear to you

Here is what is mentioned on the site:

RXTX 2.1 Is the main development branch for RXTX. The namespace used is gnu.io.. Unless you have any specific reasons, this is the recommended download. If you need to be compatible with javax.comm.* then download RXTX 2.0, but note that not much development effort is provided for this branch so you will be missing out on all the fixes that the main branch is getting.*

Chand Priyankara
  • 6,739
  • 2
  • 40
  • 63