站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题编译时正常,运行时报NoClassDefFound错误,详情内示

编译时正常,运行时报NoClassDefFound错误,详情内示

摘要: 编译时正常,运行时报NoClassDefFound错误,详情内示


一个javamail的问题。
代码如下:
import javax.mail.*;
import XXX.*;
import XXX.*;

public class GetConnection
{
private final String STRMAILSERVER = "XXX";
public String STRUSERNAME = "XXX";
public String STRPASSWORD = "XXX";
private int intCount = 0;

XXX m_objMailMonitor = new XXX();

XXX m_objMailAccessor = new XXX();

public boolean getConn()
{
XXX c_authProcessResult = m_objMailAccessor.XXX(STRMAILSERVER, STRUSERNAME, STRPASSWORD);

if ("Success".equals(c_authProcessResult.toString()))
{
ARProcessResult c_monProcessResult = m_objMailMonitor.start();
if ("Success".equals(c_monProcessResult.toString()))
{
System.out.println("both started");
return true;
}
else
{
System.out.println("Monitor not started");
return true;
}
}
else
{
return false;
}
}

public static void main(String[] args)
{
GetConnection objGetConnection = new GetConnection();
if (objGetConnection.getConn())
{
System.out.println("Connected");
}
else
{
System.out.println("not connected");
}
}
}

其中“XXX”代表自己写的其他类。
编译通过
运行时报错如下:
java.lang.NoClassDefFoundError: javax/mail/MessagingException
at GetConnection.(GetConnection.java:14)
at GetConnection.main(GetConnection.java:42)
Exception in thread "main"
一般找不到包或者类定义的错误会在编译时就能发现,怎么拖到了运行时?




该被查找的类定义在当前执行类编译时存在,却无法再找到。



楼上的能否详细点,不是很清楚你的意思


设置jdk的安装目录,如果不设这个变量的话,这些软件包很可能找不到javac.exe在哪里。比如ant就需要通过这个环境变量来确定javac.exe的路径来执行compile task。这个环境变量的值就是你的jdk安装目录。如果你的jdk装在c:/jdk1.42,那么“c:/jdk1.42”就是JAVA_HOME的值。 2--path=E:/J2SDK/bin;E:/J2SDK/jre/bin classpath=.;E:/J2SDK/lib;E:/J2SDK/lib/tools.jar 3--如果出现以下异常: Exception in thread "main" java.lang.NoClassDefFoundError: 最好把你的class声明为public,并且和你的文件名相同. 如果第二个程序能够成功运行则可能有一下问题: (1)classpath是否设置正确. (2)你执行编译和运行的拼写是否正确.


恩,我发现在C盘根目录下有j2sdk1.4.2_03安装文件夹
在Program Files文件夹下有Java文件夹,里面有一个Java运行环境
把其中的ext文件夹内容统一后,顺利运行
谢谢楼上的了


别客气


↑返回目录
前一篇: 怎么禁止Hibernate输出日志?
后一篇: Jbuilder 2006 编译 JSP 文件出错,可能是 struts 的 标签有问题了