« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9703000 建立时间:2004年12月20日 |

| |
[java语言]为什么会出现Exception in thread "main" java.lang.NoClassDefFoundError的错误? 原创空间, 文章收藏
邢红瑞 发表于 2010/5/11 11:18:04 |
写一下 怕自己以后忘记运行环境: redhat linux as4.6, j2sdk1.6.13SendMessage.java的内容如下:package test;
import org.smslib.SMSLibException;import org.smslib.Service;import org.smslib.OutboundMessage;import org.smslib.AGateway;import org.smslib.modem.SerialModemGateway;
import java.io.IOException;
/** * Created by IntelliJ IDEA. * User: asiainfo * Date: 2010-5-10 * Time: 16:14:30 * To change this template use File | Settings | File Templates. */public class SendMessage { public void doIt(String phone, String content) throws IOException, InterruptedException, SMSLibException { Service srv; OutboundMessage msg; srv = new Service(); SerialModemGateway gateway = new SerialModemGateway("modem.ttyUSB0", "/dev/ttyUSB0", 9600, "WAVECOM MODEM", "W810");//采用Sony Ericsson的W810c手机发送 gateway.setProtocol(AGateway.Protocols.PDU); gateway.setInbound(true); gateway.setOutbound(true); gateway.setSimPin("0000"); srv.addGateway(gateway); srv.startService(); System.out.println("Mobile Device Information: "); System.out.println(" Manufacturer : " + gateway.getManufacturer()); System.out.println(" Model : " + gateway.getModel()); System.out.println(" Serial No : " + gateway.getSerialNo()); System.out.println(" IMSI : " + gateway.getImsi()); System.out.println(" S/W Version : " + gateway.getSwVersion()); System.out.println(" Battery Level : " + gateway.getBatteryLevel() + "%"); System.out.println(" Signal Level : " + gateway.getSignalLevel() + "%"); msg = new OutboundMessage(phone, content); srv.sendMessage(msg);
srv.stopService(); }
public static void main(String args[]) throws IOException, InterruptedException, SMSLibException { SendMessage app = new SendMessage();
app.doIt("136******", "Hello 邢红瑞");
}}
运行: /usr/java/jre1.6.0_13/bin/java -Dsmslib.serial.polling -classpath log4j-1.2.15.jar:smslib-3.4.6.jar test.SendMessage出错: Exception in thread "main" java.lang.NoClassDefFoundDrror: SendMessage
后来终于找到原因: java加载了SendMessage.class以后,java就试图到CLASSPATH中找类SendMessage,CLASSPATH为:$CLASSPATH=/usr/java/jre1.6.0_13/lib:/usr/java/jre1.6.0_13/jre/libjava找不到SendMessage类的定义。windows包含了当前路径,但是linux和unix没有当前路径,必须手工添加/usr/java/jre1.6.0_13/bin/java -Dsmslib.serial.polling -classpath log4j-1.2.15.jar:smslib-3.4.6.jar:. test.SendMessage注意最后加了一个冒号和点,冒号是linux下文件分割符。 |
|
|