public void doIt() throws Exception
{
   Service srv;
   OutboundMessage msg;
   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());
   srv = new Service();
   //SerialModemGateway gateway = new SerialModemGateway("modem.com3", "COM3", 9600, "wavecom", "1111");
   SerialModemGateway gateway = new SerialModemGateway("modem.com3", "COM3",9600, "wavecom", "1111");
   gateway.setInbound(true);
   gateway.setOutbound(true);
   gateway.setSimPin("0000");
//   gateway.setOutboundNotification(outboundNotification);
//   srv.setOutboundNotification(outboundNotification);
   srv.addGateway(gateway);
   srv.startService();
   System.out.println("Modem Information:");
   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() + "%");
   System.out.println(" Battery Level: " + gateway.getBatteryLevel() + "%");
   System.out.println();
   // Send a message synchronously.
  
   msg = new OutboundMessage("13910740415", "这个是用java发的中文短信!");//手机号码,和短信内容
   msg.setEncoding(MessageEncodings.ENCUCS2);//这句话是发中文短信必须的
   srv.sendMessage(msg);
   System.out.println(msg);
   System.out.println("Now Sleeping - Hit <enter> to terminate.");
   System.in.read();
   srv.stopService();
}
Eclipse里 工程已经把smslib-3.4.1.jar加到工程里了,但是还是提示错误:
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.4.1
0 [main] INFO smslib - 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
0 [main] INFO smslib - Version: 3.4.1
0 [main] INFO smslib - JRE Version: 1.5.0
0 [main] INFO smslib - JRE Impl Version: 1.5.0-b64
0 [main] INFO smslib - O/S: Windows XP / x86 / 5.1
31 [Thread-0] INFO smslib - GTW: modem.com3: Starting gateway, using Generic AT Handler.
31 [Thread-0] INFO smslib - GTW: modem.com3: Opening: COM3 @9600
Exception in thread "Thread-0" java.lang.ExceptionInInitializerError
at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:69)
at org.smslib.modem.AModemDriver.connect(AModemDriver.java:110)
at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:158)
at org.smslib.Service$1Starter.run(Service.java:239)
Caused by: java.lang.RuntimeException: CommPortIdentifier class not found
at org.smslib.helper.CommPortIdentifier.<clinit>(CommPortIdentifier.java:76)
... 4 more
=========================================请教,谢谢

解决方案 »

  1.   

    我把 comm.jart添加到 Eclipse工程里了 又出现了新的错误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.4.1
    0 [main] INFO smslib - 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
    0 [main] INFO smslib - Version: 3.4.1
    0 [main] INFO smslib - JRE Version: 1.5.0
    0 [main] INFO smslib - JRE Impl Version: 1.5.0-b64
    0 [main] INFO smslib - O/S: Windows XP / x86 / 5.1
    47 [Thread-0] INFO smslib - GTW: modem.com3: Starting gateway, using Generic AT Handler.
    47 [Thread-0] INFO smslib - GTW: modem.com3: Opening: COM3 @9600
    org.smslib.GatewayException: Comm library exception: java.lang.RuntimeException: javax.comm.NoSuchPortException
    at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:99)
    at org.smslib.modem.AModemDriver.connect(AModemDriver.java:110)
    at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:158)
    at org.smslib.Service$1Starter.run(Service.java:239)
    15062 [pool-1-thread-1] WARN smslib - WatchDog: Gateway: modem.com3 restarting.
    15062 [pool-1-thread-1] INFO smslib - GTW: modem.com3: Stopping gateway...
    15062 [pool-1-thread-1] WARN smslib - WatchDog: error while shutting down Gateway: modem.com3
    java.lang.NullPointerException
    at org.smslib.scheduler.Scheduler.remove(Scheduler.java:84)
    at org.smslib.modem.AModemDriver.disconnect(AModemDriver.java:236)
    at org.smslib.modem.ModemGateway.stopGateway(ModemGateway.java:169)
    at org.smslib.Service$WatchDog.process(Service.java:1386)
    at org.smslib.scheduler.ASchedulerTask.run(ASchedulerTask.java:80)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
    at java.lang.Thread.run(Thread.java:595)
    15093 [pool-1-thread-1] INFO smslib - GTW: modem.com3: Starting gateway, using Generic AT Handler.
    15093 [pool-1-thread-1] INFO smslib - GTW: modem.com3: Opening: COM3 @9600
    15093 [pool-1-thread-1] ERROR smslib - WatchDog: error while starting Gateway: modem.com3
    org.smslib.GatewayException: Comm library exception: java.lang.RuntimeException: javax.comm.NoSuchPortException
    at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:99)
    at org.smslib.modem.AModemDriver.connect(AModemDriver.java:110)
    at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:158)
    at org.smslib.Service$WatchDog.process(Service.java:1395)
    at org.smslib.scheduler.ASchedulerTask.run(ASchedulerTask.java:80)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
    at java.lang.Thread.run(Thread.java:595)
      

  2.   

    javax.comm.NoSuchPortException 你的短信设备是接到COM3上吗?
      

  3.   

    配置没有配置好啊~~~ 和我昨天一样的错误~把javacomm20-win32包中的文件配置到<JDK_HOME>\jre\bin\win32com.dll<JDK_HOME>\jre\lib\javax.comm.properties<JDK_HOME>\jre\lib\comm.jarJAVA_HOME是jdk的路径,而非jre配置完后可以用下面的代码测试:
    成功则打印出端口名  没成功什么都不打印
    public static void main(String args[])
    {
     Enumeration en = CommPortIdentifier.getPortIdentifiers();  
     
     CommPortIdentifier portId; 
     
     while (en.hasMoreElements())  {  
     
             portId = (CommPortIdentifier) en.nextElement(); 
             
             if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL){   
              
             System.out.println(portId.getName()); 
             System.out.println("=============");
             }
            }
    }
      

  4.   

    一、配置Commlib:
    1. 将win32com.dll放置在%JAVA_HOME%\jre\bin下 
    2. 将comm.jar放置在%JAVA_HOME%\jre\lib\ext下 
    3. 将javax.comm.properties放置在%JAVA_HOME%\jar\lib下 
    二、将Eclipse中java / installed jres 指定到和环境变量JAVA_HOME一样的路径,一般是JDK目录,而不是JRE目录。第二步往往容易忽略。