我在WEB-INF \ lib目录中有jacob.jar,在Windows \ system32目录中有jacob-1.16.1-x86.dll。

在开发箱上可以正常工作。在生产机器上,它掉落了。我正在运行Tomcat7。日志包含:

java.lang.NoClassDefFoundError: Could not initialize class com.jacob.com.Dispatch


在这条线上:

Dispatch oCompy = new Dispatch("Compy.Connect")


有什么建议么?

编辑:
根据建议,我已经遍历了jacob的源代码,但找不到任何引用通常不可用的库的import语句。我将在这里列出清单。我是Java的新手,所以也许我错过了一些东西:

jacob-1.16.1\src\com\jacob\activex\activexcomponent.java - import com.jacob.com.Dispatch;
jacob-1.16.1\src\com\jacob\activex\activexcomponent.java - import com.jacob.com.JacobObject;
jacob-1.16.1\src\com\jacob\activex\activexcomponent.java - import com.jacob.com.Variant;
jacob-1.16.1\src\com\jacob\activex\activexdispatchevents.java - import com.jacob.com.InvocationProxy;
jacob-1.16.1\src\com\jacob\activex\activexdispatchevents.java - import com.jacob.com.Dispatch;
jacob-1.16.1\src\com\jacob\activex\activexdispatchevents.java - import com.jacob.com.DispatchEvents;
jacob-1.16.1\src\com\jacob\activex\activexinvocationproxy.java - import com.jacob.com.Variant;
jacob-1.16.1\src\com\jacob\activex\activexinvocationproxy.java - import com.jacob.com.NotImplementedException;
jacob-1.16.1\src\com\jacob\activex\activexinvocationproxy.java - import java.lang.reflect.Method;
jacob-1.16.1\src\com\jacob\activex\activexinvocationproxy.java - import com.jacob.com.InvocationProxy;
jacob-1.16.1\src\com\jacob\activex\activexinvocationproxy.java - import java.lang.reflect.InvocationTargetException;
jacob-1.16.1\src\com\jacob\com\dateutilities.java - import java.util.Calendar;
jacob-1.16.1\src\com\jacob\com\dateutilities.java - import java.util.Date;
jacob-1.16.1\src\com\jacob\com\invocationproxyallvariants.java - import java.lang.reflect.InvocationTargetException;
jacob-1.16.1\src\com\jacob\com\invocationproxyallvariants.java - import java.lang.reflect.Method;
jacob-1.16.1\src\com\jacob\com\jacobreleaseinfo.java - import java.util.Properties;
jacob-1.16.1\src\com\jacob\com\jacobreleaseinfo.java - import java.io.InputStream;
jacob-1.16.1\src\com\jacob\com\jacobreleaseinfo.java - import java.io.IOException;
jacob-1.16.1\src\com\jacob\com\libraryloader.java - import java.util.Set;
jacob-1.16.1\src\com\jacob\com\libraryloader.java - import java.util.ResourceBundle;
jacob-1.16.1\src\com\jacob\com\libraryloader.java - import java.util.Locale;
jacob-1.16.1\src\com\jacob\com\libraryloader.java - import java.util.MissingResourceException;
jacob-1.16.1\src\com\jacob\com\libraryloader.java - import java.util.Enumeration;
jacob-1.16.1\src\com\jacob\com\libraryloader.java - import java.util.HashSet;
jacob-1.16.1\src\com\jacob\com\rot.java - import java.util.WeakHashMap;
jacob-1.16.1\src\com\jacob\com\rot.java - import java.util.Map;
jacob-1.16.1\src\com\jacob\com\rot.java - import java.util.Iterator;
jacob-1.16.1\src\com\jacob\com\rot.java - import java.util.HashMap;
jacob-1.16.1\src\com\jacob\com\variant.java - import java.util.Date;
jacob-1.16.1\src\com\jacob\com\variant.java - import java.math.BigInteger;
jacob-1.16.1\src\com\jacob\com\variant.java - import java.math.BigDecimal;
jacob-1.16.1\src\com\jacob\com\variantutilities.java - import java.util.Date;
jacob-1.16.1\src\com\jacob\com\variantutilities.java - import java.math.MathContext;
jacob-1.16.1\src\com\jacob\com\variantutilities.java - import java.math.BigDecimal;
jacob-1.16.1\src\com\jacob\com\variantutilities.java - import java.math.BigInteger;
jacob-1.16.1\src\com\jacob\com\variantutilities.java - import java.lang.reflect.Array;


编辑:
我不确定这是否是答案。

我通过将网站WEB-INF \ lib目录添加到Tomcat的类路径来解决此问题。我觉得这不是正确的答案,因为我的理解是,访问该网站时,网站会自动将WEB-INF \ lib包含到类路径中。

使该问题更加困惑的是,该站点可以正常运行,可以访问该目录中的其他库。

因此,必须添加到类路径是行为异常的库的一种解决方法。哪个请求的问题是解决方法的正确答案?我想我将把这个问题留待解决。

最佳答案

此错误意味着类com.jacob.com.Dispatch正在使用另一个类,并且找不到它。

如果您拥有类源代码,请检查其使用了哪些类,并查看类路径中是否包含这些类。

如果不这样做,请尝试查看文档,找到包含缺少类的jar,然后将其添加到classpath中。

10-08 01:29