配置: 将win32com.dll拷贝到jre\bin目录下,javax.comm.properties拷贝到jre\lib目录下,命令行下运行可以显示swing界面,但在eclipse 下运行就抛如下异常(lib目录下添加了comm.jar、smslib-3.4.1.jar):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)
[17:31:11] WARN [smslib] - WatchDog: Gateway: modem.com2 restarting.
[17:31:11] INFO [smslib] - GTW: modem.com2: Stopping gateway...
[17:31:11] WARN [smslib] - WatchDog: error while shutting down Gateway: modem.com2
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(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[17:31:11] INFO [smslib] - GTW: modem.com2: Starting gateway, using Generic AT Handler.
[17:31:11] INFO [smslib] - GTW: modem.com2: Opening: COM2 @9600
[17:31:11] ERROR [smslib] - WatchDog: error while starting Gateway: modem.com2
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(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)下面为源码:import org.smslib.IOutboundMessageNotification;
import org.smslib.Library;
import org.smslib.OutboundMessage;
import org.smslib.Service;
import org.smslib.Message.MessageEncodings;
import org.smslib.modem.SerialModemGateway;public class SendMessage
{
public void doIt() throws Exception
{
Service srv;
OutboundMessage msg;
OutboundNotification outboundNotification = new OutboundNotification();
System.out.println(Library.getLibraryDescription());
srv = new Service();
SerialModemGateway gateway = new SerialModemGateway("modem.com2", "COM2", 9600, "Nokia", "1600");
gateway.setInbound(true);
gateway.setOutbound(true);
gateway.setSimPin("0000");
srv.setOutboundNotification(outboundNotification);
srv.addGateway(gateway);
srv.startService();

msg = new OutboundMessage("136*********", "java 发的第一个短信");
msg.setEncoding(MessageEncodings.ENCUCS2);
srv.sendMessage(msg);
System.out.println(msg);

srv.stopService();
} public class OutboundNotification implements IOutboundMessageNotification
{
public void process(String gatewayId, OutboundMessage msg)
{
System.out.println("Outbound handler called from Gateway: " + gatewayId);
System.out.println(msg);
}
} public static void main(String args[])
{
SendMessage app = new SendMessage();
try
{
app.doIt();
}
catch (Exception e)
{
System.out.println("here");
e.printStackTrace();
}


}}在此求助?谢谢

解决方案 »

  1.   

    修改配置后现在是这个异常:
    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
    SLF4J built for org.slf4j.impl.Log4jLoggerFA
    [11:45:02] 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
    [11:45:02] INFO [smslib] - Version: 3.4.1
    [11:45:02] INFO [smslib] - JRE Version: 1.6.0_12
    [11:45:02] INFO [smslib] - JRE Impl Version: 11.2-b01
    [11:45:02] INFO [smslib] - O/S: Windows XP / x86 / 5.1
    [11:45:02] INFO [smslib] - GTW: modem.com2: Starting gateway, using Generic AT Handler.
    [11:45:02] INFO [smslib] - GTW: modem.com2: Opening: COM2 @9600
    [11:45:51] INFO [smslib] - GTW: modem.com2: Closing: COM2 @9600
    here
    org.smslib.TimeoutException: No response from device.
    at org.smslib.modem.AModemDriver$CharQueue.get(AModemDriver.java:514)
    at org.smslib.modem.AModemDriver.getResponse(AModemDriver.java:306)
    at org.smslib.modem.athandler.ATHandler.getSimStatus(ATHandler.java:130)
    at org.smslib.modem.AModemDriver.connect(AModemDriver.java:131)
    at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:158)
    at org.smslib.Service$1Starter.run(Service.java:239)