smslib для Java: пример ошибки отправки сообщения

Я установил библиотеку smslib на свой компьютер с Windows. Я следовал всем инструкциям на сайте smslib.org по настройке библиотеки. Но когда я пытаюсь запустить пример SendMessage, возникает ошибка.

    package examples.modem;

    import org.smslib.AGateway;
    import org.smslib.IOutboundMessageNotification;
    import org.smslib.Library;
    import org.smslib.OutboundMessage;
    import org.smslib.Service;
    import org.smslib.modem.SerialModemGateway;

    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", "COM12", 115200, "Huawei", "E303");
            gateway.setInbound(true);
            gateway.setOutbound(true);
            gateway.setSimPin("0000");
            // Explicit SMSC address set is required for some modems.
            // Below is for VODAFONE GREECE - be sure to set your own!
            gateway.setSmscNumber("+xxxxxxxxxxx");
            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("xxxxxxxxx", "Hello from SMSLib!");
            Service.getInstance().sendMessage(msg);
            System.out.println(msg);
            // Or, send out a WAP SI message.
            //OutboundWapSIMessage wapMsg = new OutboundWapSIMessage("xxxxxxxx",  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("xxxxxxxxxxx", "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();
        }
    }
}

ошибка:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The method getInstance() is undefined for the type Service
The method getInstance() is undefined for the type Service
The method getInstance() is undefined for the type Service
The method getInstance() is undefined for the type Service
The method getInstance() is undefined for the type Service

at examples.modem.SendMessage.doIt(SendMessage.java:34)
at examples.modem.SendMessage.main(SendMessage.java:79)

Может ли кто-нибудь помочь мне с этим?


person Kaveen Kumarasinghe    schedule 18.12.2014    source источник
comment
Вы не добавили smslib в свой путь к классам, не так ли?   -  person André    schedule 18.12.2014
comment
Нет, добавил, еще раз проверил   -  person Kaveen Kumarasinghe    schedule 18.12.2014
comment
Что ж, нерешенные проблемы компиляции означают, что вы пытались запустить программу Java, совместимую с компилятором jdt, которая имеет ошибки. Он не может найти метод getInstance(). Проверьте, есть ли у вас допустимая банка, проверьте, есть ли в вашей версии этот метод, проверьте, является ли добавленная банка правильной. Я почти уверен, что это просто проблема с classpath.   -  person André    schedule 18.12.2014
comment
Спасибо, я использовал smslib-3.5.0, и эта ошибка исчезла, но при запуске возникло другое исключение: обнаружены как log4j-over-slf4j.jar, так и slf4j-log4j12.jar на пути к классу, вытесняя StackOverflowError ---   -  person Kaveen Kumarasinghe    schedule 18.12.2014
comment
Это не связано с smslib, вам нужно выбрать структуру ведения журнала. вы говорите log4j, что будете использовать slf4j, и вы говорите slf4j, что собираетесь использовать log4j. Удалите один из этих фреймворков и посмотрите, работает ли он. Не могу сказать, какой нужен.   -  person André    schedule 18.12.2014
comment
Спасибо за помощь, это сработало для меня.   -  person Kaveen Kumarasinghe    schedule 19.12.2014
comment
Если вы исправили свою проблему, рекомендуется ответить на нее самостоятельно с решением :)   -  person André    schedule 19.12.2014


Ответы (1)


контрольный список: -

  • добавить javax.comm.properties,
  • Файл Win32.dll (это вам нужно для связи с вашим модемом)
  • баночка smslib
  • Убедитесь, что у вас есть совместимый модем. Смартфоны на андроиде не работают. вам либо нужны некоторые модели старой школы со встроенным модемом, либо модем usb-GSM.
  • Есть ли другие классы в вашем пакете?
person user4373914    schedule 18.12.2014
comment
Я добавил javax.comm.properties в JAVA_HOME\jre\lib\ext , win32.dll в JAVA_HOME\jre\bin, smslib jar в путь к классу. Но все та же ошибка - person Kaveen Kumarasinghe; 18.12.2014